【剑指offer系列】 数组中只出现一次的数字___40
2016-04-11 10:30
281 查看
题目描述:
一个数组中除了两个数字只出现了一次外,其它数字都出现了两次。找出这两个数
示例:
输入:{2 ,4 ,3 ,6 ,2 ,3}
输出:4,6
分析:
可以利用相同数字异或为0的思想进行查找
代码:
一个数组中除了两个数字只出现了一次外,其它数字都出现了两次。找出这两个数
示例:
输入:{2 ,4 ,3 ,6 ,2 ,3}
输出:4,6
分析:
可以利用相同数字异或为0的思想进行查找
代码:
bool isSet(int num,int bit){ return (num&(1<<bit))>0; } int getLastBit(int num){ int bit=0; while(bit<32&&num&(1<<bit)==0){ ++bit; } return bit; } void onlyOnce(vector<int> nums){ if(nums.size()<=1) return; int num=0; for(int i=0;i<nums.size();++i){ num^=nums[i]; } int bit=getLastBit(num); int num1=0,num2=0; for(int i=0;i<nums.size();++i){ if(isSet(nums[i],bit)) num1^=nums[i]; else num2^=nums[i]; } cout<<num1<<"\t"<<num2<<endl; }
相关文章推荐
- jQuery EasyUI使用教程之创建一个属性网格
- 关于js弹窗与FileUpload相结合的弹窗
- jQuery获取多种值的方法
- jQuery获取多种值的方法
- DIV+CSS规范命名大全集合
- 10个最常见的 HTML5 面试题及答案
- HTML 几种特别分割线特效
- 25 个 JavaScript 面试题
- 5个典型的JavaScript面试题
- [JS] save txt file
- 报表软件JS开发引用HTML DOM的windows对象
- HTML中鼠标滚轮事件onmousewheel处理
- 创建自己的AngularJS - 作用域和Digest(四)
- 报表软件JS开发引用HTML DOM的windows对象
- 【jQuery源码】事件委托
- JS数组方法汇总 array数组元素的添加和删除
- 为什么使用<!DOCTYPE HTML>
- HTML5是如何使用鼠标滚轮事件的
- 笔记练习:《Javascript入门经典(第5版)》page163_13.8_Practice
- 前端工程师必备技能