码迷,mamicode.com
首页 > 编程语言 > 详细

找出数组中出现仅一次的数字

时间:2014-10-27 00:38:31      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:异或运算

有一个元素类型是整数的数组,数组中有一个数字仅仅出现了一次,其它都出现了两次,现在请把这个仅仅出现一个找出来。

分析:

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;
}

找出数组中出现仅一次的数字

标签:异或运算

原文地址:http://blog.csdn.net/ddupd/article/details/40483757

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!