程序员面试100题之三十四,找出数组中两个只出现一次的数字
2010-09-24 18:34
375 查看
#include "stdafx.h" int find_first_1(int n) { int index = 1; while( (n&1)==0 && index < 32) { n >>= 1; index <<= 1; } return index; } void find(int * arr, int len, int & num1, int & num2) { int temp = 0; for(int i=0;i<len;i++) temp ^= arr[i]; unsigned int index = find_first_1(temp); num1 = 0; num2 = 0; for(int i=0;i<len;i++) { if((arr[i]&index)==0) num1^=arr[i]; else num2^=arr[i]; } } int _tmain(int argc, _TCHAR* argv[]) { int num1,num2; int arr[] = {2,2,3,100,4,5,4,5}; find(arr,8,num1,num2); printf("%d %d\n",num1,num2); return 0; }
相关文章推荐
- 程序员面试100题之34找出数组中两个只出现一次的数字
- 程序员面试100题(算法)之找出数组中两个只出现一次的数字(位运算实现)
- 找出数组中两个只出现一次的数字 【微软面试100题 第六十一题】
- 找出数组中两个只出现一次的数字 【微软面试100题 第六十一题】
- 程序员面试题精选100题(34)-找出数组中两个只出现一次的数字
- (34)-[转载] 程序员面试题精选100题 -找出数组中两个只出现一次的数字
- 微软面试100题-61(找出数组中两个只出现一次的数字)
- 100题_34 找出数组中两个只出现一次的数字
- 程序员面试题精选(54):找出数组中两个只出现一次的数字
- 程序员面试题精选100题(34)-找出数组中两个只出现一次的数字
- 微软100题(61)找出数组中两个只出现一次的数字
- 找出数组中两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n), 空间复杂度是O(1)
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 找出数组中两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现
- 找出数组中两个只出现一次的数字 [No. 30]