【算法练习】找出数组中仅出现一次的数字
2014-03-31 19:46
417 查看
【题目】:给定一个整数数组,数组中除了一个整数仅出现一次外,其他数字都是出现两次,采用时间可空间复杂度尽量小的方法找出这个仅出现一次的整数。
【来源】微软校招题
我最早知道这个题是在C语言的位操作学习过程中,这道题目是考察的对C或者C++位操作的应用--异或操作符 “^”,两个相同的整数(在计算机内表示是补码)进行异或操作,结果为0,数字0与任何整数异或操作,结果还是那个整数,利用这个性质,将数组中的整数异或操作,最终所有相同的数字都被异或操作结果为0,0与仅出现一次的数字异或,得到的还是那个数字。可以找到要求的数字。
【源代码】:
【来源】微软校招题
我最早知道这个题是在C语言的位操作学习过程中,这道题目是考察的对C或者C++位操作的应用--异或操作符 “^”,两个相同的整数(在计算机内表示是补码)进行异或操作,结果为0,数字0与任何整数异或操作,结果还是那个整数,利用这个性质,将数组中的整数异或操作,最终所有相同的数字都被异或操作结果为0,0与仅出现一次的数字异或,得到的还是那个数字。可以找到要求的数字。
【源代码】:
//****************************************************** // date : 2014-03-31 // author : zhangxiaoya // university : BIT //****************************************************** /********************************************************** Instruction 输入一个整数数组,数组中除了一个整数仅出现一次外, 其他整数都出现两次,给出一种时间和空间复杂度最小的 方法找出这个只出现一次的整数 ***********************************************************/ #include <iostream> using namespace std; int main() { int n,t,r; while(cin>>n) { r =0; while(n--) { cin>>t; r ^=t; } cout<<r<<endl; } return 0; }
相关文章推荐
- 算法:数组找出2个只出现一次的数字(其他元素出现两次)
- 算法习题61:找出数组中两个只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次
- 算法题:从数组找数字(网易2017校园招聘) 2017-10-10 算法爱好者 (点击上方公众号,可快速关注) 给定一个数组,除了一个数出现 1 次之外,其余数都出现 3 次。找出出现一次的数。
- 算法题:找出整数数组中两个只出现一次的数字
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 经典算法题1:找出数组中只出现一次的数字,其它数字都出现了两次
- [每日练习]一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字
- 异或运算的经典算法题:找出数组中只出现一次的数字,其它数字都出现了两次
- 每天一道算法题-1 找出数组中两个只出现一次的数字
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 【算法14】找出数组中两个只出现一次的数字
- 程序员面试100题(算法)之找出数组中两个只出现一次的数字(位运算实现)
- 算法题6 找出整数数组中两个只出现一次的数字
- 经典算法题1:找出数组中只出现一次的数字,其它数字都出现了两次
- 找出数组中两个只出现一次的数字 (算法)
- 算法--找出数组中两个只出现一次的数字
- 找出数组中两个只出现一次的数字
- 程序员面试题精选100题(63)-数组中三个只出现一次的数字[算法]
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。