1、数组中仅仅有一个元素仅仅出现一次,其余出现偶数次。

利用异或中同样元素相互抵消的方式求解。

2、数组中仅仅有2个元素仅仅出现一次。其余出现偶数次。

class Solution {
public:
int singleNumber(int A[], int n) {//返回仅仅出现一次的元素
if(n==1)return A[0];
int i,sum=A[0];
for(i=1;i<n;++i)sum^=A[i];
return sum;
}
vector<int> twoSingleNumber(int A[], int n) {
int res=singleNumber(A,n);//找出全部元素异或的结果,即两个目标元素异或的结果
int pos=0,i;
while(res){//找出res为1的一位(这是两个目标元素位数不同的一位),从而可将A划分为两部分,这两部分中,同样的数字为在同一部分,由于他们每位都同样
if(res&1)break;
res>>=1;
pos++;
}
vector<int>ans(2,0);
for(i=0;i<n;++i){
if((A[i]>>pos)&1)ans[0]^=A[i];//假设是pos位为1。即为第一部分,对这部分进行异或,终于同样的数字消除掉,得到的就是第一个元素
else ans[1]^=A[i];
}
cout<<ans[0]<<" "<<ans[1]<<endl;
return ans;
}
};

最新文章

  1. Html和CSS布局技巧
  2. JS学习笔记01
  3. 深入理解CSS定位中的偏移
  4. 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化
  5. Extjs 4.2 Grid增删改及后台交互(Java)
  6. 第三百三十五天 how can I 坚持
  7. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
  8. PHP的curl常用的5种写法
  9. android脚步---数字时钟和模拟时钟
  10. C++中的输入参考
  11. 【2017-06-05】Jquery.ajax
  12. vue2.0的瀑布流组件-使用说明
  13. JVM 指令
  14. 在Eclipse中调用Algs4库
  15. EXCEL文件导入时报_未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
  16. Fox And Dinner CodeForces - 510E (最大流)
  17. ISO27001适用性-导图
  18. mysql jdbc操作
  19. 10.29 scrum meeting newbe软件团队工作分配
  20. phantomjs-prebuilt@2.1.16 install: `node install.js`

热门文章

  1. 如何使用 Open Live Writer 插入原图
  2. linux下mysql 查看默认端口号与修改端口号方法
  3. 【BZOJ4487】【JSOI2015】染色问题
  4. 2015 Multi-University Training Contest 2 Friends
  5. [MySQL]快速解决&quot;is marked as crashed and should be repaired&quot;故障[转]
  6. 在android中,编译的项目使用到第三方jar的导入方法 终极版!
  7. 在独立的文件里定义WPF资源
  8. 【甘道夫】Sqoop1.99.3基础操作--导入Oracle的数据到HDFS
  9. ORA-06553:PLS-306:wrong number or types of arguments in call to &amp;#39;&amp;#39;
  10. xcode5. 安装cocos2d-x 学习中。。。