.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
2017-05-05 19:10
676 查看
void Find_data(int *arr,int len, int *data1, int *data2) { assert(arr); unsigned int ret = 0; for (int i = 0; i <len; i++) { ret ^= arr[i]; } int tmp1 = 1; int tmp2 = 1; int count = 0; while (1) { if ((ret&tmp1) != 0) { break; } tmp1 <<= 1; } *data1 = *data2 = 0; for (int i = 0; i < len; i++) { if (arr[i] & tmp1) { *data1 ^= arr[i]; } else { *data2 ^= arr[i]; } } } int main() { int arr[] = { 1, 1, 3, 3, 4, 4, 5, 5, 6, 6, 24, 19, 19, 36, 7, 7 }; int len = sizeof(arr) / sizeof(arr[0]); int data1, data2; Find_data(arr,len,&data1, &data2); printf("diff data : %d, %d\n", data1, data2); system("pause"); return 0; }
相关文章推荐
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
- 1.求第n个斐波那契数(非递归实现)。 2.一个数组中只有两个数字是出现一次,其他所有数字都出现 了两次。 找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
- C语言- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都成对出现,找出这两个数字,编程实现
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字
- 【C语言】一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字!
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。