题目:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)
算法思路:
如果一个数组当中,只要一个数字出现一次,其他都是出现两次,那么我们只要把所有的数进行异或得到的就是结果
现在有两个数字出现一次,那么我们还是异或所有的数,最后的到的结果就是这两个不想等的数字的异或结果
比如 2 4 3 6 3 2...
分类:
编程语言 时间:
2014-12-27 13:58:44
阅读次数:
258
题目1351:数组中只出现一次的数字
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2597
解决:766
题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
输入:
每个测试案例包括两行:
第一行包含一个整数n,表示数组大小。2
第二行包含n个整数,表示数组元素,元素均...
分类:
编程语言 时间:
2014-12-20 11:44:17
阅读次数:
244
题目1351:数组中只出现一次的数字
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2582解决:758
题目描述:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
输入:
每个测试案例包括两行:
第一行包含一个整数n,表示数组大小。2<=n <= 10^6。
第二行包含n个整数,表示数组元素,元素均为int。
输出:
对应每个测试案例,输出数组...
分类:
编程语言 时间:
2014-12-11 00:18:55
阅读次数:
176
题目:一个整型数组里除了两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度为O(1)。分析:由于时间复杂度和空间复杂度的限制,不可能用多次遍历数组方法和辅助数组的方法。因此问题比较难以下手。现在考虑如果只有..
分类:
编程语言 时间:
2014-12-09 12:26:22
阅读次数:
175
题目:一个整形数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。思路:题目要求非常严格,O(n)的时间复杂度,O(1)的空间复杂度。难度不小。参照书上给出的思路,实现了一遍,主要也是弥补位运算方面经验的欠缺。下面是我的...
分类:
编程语言 时间:
2014-11-04 14:39:02
阅读次数:
172
题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)思路 根据【异或】原理,任何一个数与自身异或的结果都为0以及任何数与0异或的结果都是其本身,所以本题可以将数组的所有的元素异或,得到结果即是只出现一次的.....
分类:
编程语言 时间:
2014-11-02 16:27:26
阅读次数:
216
数组中只出现一次的数字 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 一个整型数组里除了两个数字以外, 其他的数字都出现了两次. 请写程序找出这两个只出现一次的数字.如果从头到尾依次异或数组中的每一个数字, 那么最终的结果刚好是那个只出现一次的数字.根据结果数组二进制某一位为1, 以此分组, 为1的一组, 为0的一组, 再重新进行异或. 最后得...
分类:
其他好文 时间:
2014-07-06 10:04:23
阅读次数:
169
题目:一个整型数组里除了两个数字之外,其余的数字都出现了两次,求这两个只出现一次的数字题解分析:首先看到数字出现1次,出现2次,应该联想到 异或运算:0^a = aa^a = 0如果数组中只有一个数字出现奇数次,其余都出现偶数次,我们就可以将这些数字全部异或,最后的结果即为所求(因为所有偶数次数字异...
分类:
其他好文 时间:
2014-06-27 14:20:36
阅读次数:
153
其他两次,一个一次/其他三次,一个一次/其他两次,两个一次============================================任何一个数字异或他自己都得零。注意异或运算的初始化变量为0,因为0异或任何数字都得那个数字自身。Single
Number1.一个整型数组中除了一个数字之...
分类:
其他好文 时间:
2014-06-09 19:23:56
阅读次数:
209
思路:上篇博文中已经了解到异或去重的原理,而且知道如果只有一个只出现一次的数字的求法,但这里是有两个只出现一次的数字,我们便要想办法把他分为两个子数组,每个子数组中包含一个只出现一次的数字,其他的数字都出现了两次。剑指offer上的思路很巧妙,依然从头到尾异或所有的数字,这样得到的结果实际上就是两个只出现了一次的数字异或的结果,我们在异或后的结果中找出其二进制中最右边为1的位,该位既然为1,说明异或的两个数字对应的该位肯定不同,必定一个为1,一个为0,因此我们可以考虑根据此位是否为1来划分这两个子数组,这样...
分类:
其他好文 时间:
2014-06-01 09:58:08
阅读次数:
245