面试算法问题

来源:互联网 发布:咸鱼卖家申请淘宝介入 编辑:程序博客网 时间:2024/06/11 03:09

网易2017校园招聘算法题(找数字问题)

(1)问题描述:给定数组A,除了一个数出现一次外,其他的数字出现3次,求只出现一次的数字

(2)要点:不考虑只出现一次的数,在每个bit上,1和0的个数都是3的倍数。

(3)代码:

#include <stdio.h>int main(){unsigned int nCases = 0;scanf("%d",&nCases);for(unsigned int iCases = 1;iCases <= nCases;++iCases){unsigned int n = 0;scanf("%d",&n);unsigned int* data = new unsigned int[n];for(unsigned int i = 0;i < n;++i) scanf("%d",&data[i]);unsigned int ret = 0;for(unsigned int ibit = 0;ibit < 32;++ibit){unsigned int count = 0;for(unsigned int i = 0;i < n;++i){count += (0 != (data[i]&(1<<ibit)));}if(count%3) ret |= (1<<ibit);}printf("%u\n",ret);delete[] data;}return 0;}



(1)问题描述:给定两个有序数组A和B,其长度分别是m和n。如何求A和B构成的新数组的中位数(m = n和m != n的)

(2)要点:m = n时有logn的算法,m != n时有logm*logn的算法

(3)代码:

0 0
原创粉丝点击