一道位运算的题目,一串数字,别的都出现了3次只有一个出现2次,要你找到他
来源:互联网 发布:淘宝网卖家客服电话 编辑:程序博客网 时间:2024/05/20 09:49
这题目,挺难,我开始想到的解法..是排序…之后再想每一位%3就知道那一位是不是1了,不过这解法略复杂.所以我在网上搜了下别人的解法.下面是我的理解.
int find(int *a, int n) { int one = 0, two = 0 , three=0; for (int i = 0; i < n; i++) { cout << "input " << a[i] << " "; //以下的出现指的都是二进制上每个1的出现 //one存放出现1次的,不在2出现,并且又不在one出现的才统计 //要是one有了,就升级到二,接下来就是2的情况 one ^= a[i] & (~two); cout << "one is " << one<<" "; //two存放出现2次的,要是不在one出现,且不在2出现的统计下来, //要是one出现了,two也出现了就是3, two ^= a[i] & (~one); cout << "two is" << two << " "; //后面这个是举例子的情况,这个three就是统计到目前为止,出现了3次的 //单纯举例子方便理解 three ^= a[i] & (~one)&(~two); cout << "three is" << three << endl; } return two;}int main() { int a[] = { 1,1,4,4,4,3,3,1 }; cout << find(a, 8);}
运行的截图就是,为了方便理解写了个例子:
0 0
- 一道位运算的题目,一串数字,别的都出现了3次只有一个出现2次,要你找到他
- 位运算解决“一个数组中,只有一个数字出现n次,其他数字出现k次”问题
- 一个全是32位整数的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字?
- 面试题:元素为32位整数的数组中只有一个数字出现2次,其余都是出现3次,求这个数
- 给定一个数组,其中只有一个数出现一次,别的数都出现3次,找出这个数
- 位运算---在其他数都出现偶数次的数组中找到出现奇数次的数
- 在一个数组中除两个数字只出现1次外,其它数字都出现了2次
- 现在有N个数字,其中只有一个数字出现的次数是奇数次,如何找到这个数字?
- 有一个数组,某些数字出现了N次,只有一个出现了M次,求出该数字
- 位运算---在其他数都出现k次的数组中找到只出现一次的数
- 一个整数列,除了一个数字重复2次,所有其他数字都重复4次。O(n)时间O(1)空间找到那个只出现2次的。
- 在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字
- 求一个整型数组中,只有一个数出现一次,其他的数都出现2次,求这个数?
- 一个整数数组,每个数字都出现K次,只有一个数字出现M次,找出这个数字(线性时间)
- [每日练习]一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字
- 在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字
- 在其他数都出现偶数次的数组中找到出现奇数次的数
- 找出一个数组唯一一个出现2次的数字
- Apache 安装出现 Failed to open the Windows service manager, perhaps you forgot to log in as Adminstrator
- 编程中的抽象
- Spring依赖注入:注解注入总结
- python 学习(九) 之 continue语句
- java分页技术核心代码实现
- 一道位运算的题目,一串数字,别的都出现了3次只有一个出现2次,要你找到他
- H5媒体查询
- NSThread基本使用
- Vector的用法分析
- A Basic Effect Material
- lintcode unique-paths-ii 不同的路径ii
- java的List实现深拷贝
- 蒙特卡罗树搜索+深度学习 -- AlphaGo原版论文阅读笔记
- CSS3 pointer-events的应用