////////////////////////////////////
//一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
//心得:开始我以为是只出现一次的一个数,题中确是有2个只出现一次的数
//数组从i=0,开始,另一个j=i+1开始,当出现一个相等的我就把它保存在我新建的数组里面b[n/2+1],
//当j==n时,说明在i位置之后没...
分类:
编程语言 时间:
2015-05-04 13:56:27
阅读次数:
155
题目:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度O(n),空间复杂度O(1)。
基本思想:
http://blog.csdn.net/wtyvhreal/article/details/44260321
#include
using namespace std;
int Find1(int n)//从低位开始找第...
分类:
编程语言 时间:
2015-05-03 09:20:34
阅读次数:
139
分析问题 任何一个数字异或它自己都等于0,通过这个思想遍历数组,用一个result累计异或操作,如果遇到某一个数两次,必定消除了异或操作,换句话说就是如果我们从头依次异或数组中的每一个数字,那么最终的结果应该是那个只出现一次的数字 要想说的更明白一点不如举个例子 实例 比如int[] array={...
分类:
编程语言 时间:
2015-05-02 18:01:33
阅读次数:
198
粗糙的给出了分析,最近比较累,以后会改进的。题目中包括三个小的问题,由简单到复杂:1,如果只有一个出现一次,考察到异或的性质,就是如果同一个数字和自己异或的活结果为零,那么循环遍历一遍数组,将数组中的元素全部做异或运算,那么出现两次的数字全部异或掉了,得到的结果就是只出现一次的那个数字。2,如果有两...
分类:
编程语言 时间:
2015-05-01 10:37:06
阅读次数:
186
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路我们直到异或的性质:任何一个数字异或他自己都等于0.
所以说我们如果从头到尾依次异或每一个数字,那么最终的结果刚好只出现一次的数字,因为成对出现的两次的数字全部在异或中抵消了。这道题中有两个数字只出现一次。这样的话我们得到的结果就是这两个数字的异或结果。因此我们想办法把原数组分成两个子数组,使得每个子...
分类:
编程语言 时间:
2015-04-26 19:47:36
阅读次数:
120
问题:一个整数数组里除了两个数之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n), 空间复杂度为O(1).(2012百度)#includeusing namespace std;int findFirst1(int num){ int n=0; while((...
分类:
编程语言 时间:
2015-04-25 18:11:57
阅读次数:
144
好好的利用异或可以产生神奇的效果。
异或运算的性质:
任何一个数字异或它自己都等于0。也就是说,如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,因为那些出现两次的数字全部在异或中抵消掉了。
例题:
给定大小是N的数组,数组里的元素互相不重复,元素的大小范围是1~(N+1),目标是找出第一个miss的数。要求时间复杂度O(N),空间是O(1)....
分类:
编程语言 时间:
2015-04-02 16:29:18
阅读次数:
200
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。还是理解不够深刻。 这题的主要思路还是之前的数组中只出现一次的数字的那种模式,一次遍历加上异或运算。那么这个异或的值肯定是这两个只出现一次的数字的相异或的...
分类:
编程语言 时间:
2015-03-21 22:42:34
阅读次数:
221
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。还是理解不够深刻。
这题的主要思路还是之前的数组中只出现一次的数字的那种模式,一次遍历加上异或运算。那么这个异或的值肯定是这两个只出现一次的数字的相异或的值。那么这个值的二进制表现形式中的1的结果就表示这两个数字在该bit位上不一样。那么通过此举,我们可...
分类:
编程语言 时间:
2015-03-20 00:03:13
阅读次数:
269