首页 > 代码库 > 找出数组中出现仅一次的数字
找出数组中出现仅一次的数字
有一个元素类型是整数的数组,数组中有一个数字仅仅出现了一次,其它都出现了两次,现在请把这个仅仅出现一个找出来。
分析:
1.1 首先想到的是排序,这样的时间复杂度是O(n*logn) + O(n),这样的速度的确不咋地;
1.2 最好的方法不是自己想出的,在网上找到的,是利用位运算的性质,两个相同的数字异或运算的结果是0,0和任何整数的异或运算是其本身,这两点足以,所以我们只需要遍历一边整个数组即可,时间复杂度是O(n)。
2 程序实现
#include <iostream> using namespace std; void main() { int arr[] = {1,5,4,7,9,3,4,5,1,9,7}; int nLength = sizeof(arr)/sizeof(arr[0]); int sum=0; for(int i=0;i<nLength;i++) { sum = sum ^ arr[i]; } cout<<sum; }
找出数组中出现仅一次的数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。