//一个数字出现一次 #include<iostream> using namespace std; int once(int* a, int num) { int ret = 0; for (int i = 0; i < num; ++i) { ret ^= a[i]; } return ret; } int main() { int array[5] = { 1, 2, 2, 3, 3 }; int sum = once(array, 5); cout << sum << endl; return 0; } //两个出现一次 #include <iostream> using namespace std; int TWO(int num) { int get = 0; while (num) { if (num % 2 == 1)//返回二进制中出现的第一个一的位数 { return get; } get++; num /= 2; } return -1; } void find(int*a, int ret, int *p, int *q) { int find = 0; int pos = 0; for (int i = 0; i < ret; ++i) { find ^= a[i]; } pos = TWO(find); for (int i = 0; i < ret; ++i) { if (1 & (a[i] >> pos)) { *p ^= a[i]; } else { *q ^= a[i]; } } } int main() { int a[8] = { 1, 1, 2, 5, 3, 3, 4, 5 }; int ret = sizeof(a) / sizeof(a[0]); int num1 = 0; int num2 = 0; find(a, ret, &num1, &num2); cout << num1 << "," << num2 << endl; return 0; }
求一个数组中只有一个和两个数字出现了一次,其余成对出现
原创
©著作权归作者所有:来自51CTO博客作者小杨杨雪松的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:求俩数的平均值(不用公式)
下一篇:整数转n进制
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JAVA 两个类同时实现同一个接口
JAVA 两个类同时实现同一个接口
System 默认方法 静态方法 -
一个数组中所有的数都是成对出现的只有一个或者两个数字是单独的,求这个数
一个数组中所有的数都是成对出现的只有一个或者两个数字是单独的,求这个数
一个数组中所有的数都是成对出现的只有一个 -
c语言:一组数据中只有一个数字出现了一次。(使用位运算)
c语言:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
c语言:一组数据中只有一个数字出现了一次 -
笔试面试成对出现的一组数,只有一个或两个只出现一次的数字,找到它们。
<笔试><面试>成对出现的一组数,只有一个(两个)只出现一次的数字,找到它(它们)。
面试 笔试 C/C++ 成对出现的一组数只有两个数出现一次