题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 将数组中所有的数字进行异或运算,异或是支持结合律和交换律的,根据异或出来的结果对数字进行分类,每一类异或出来的结果即为对应的不同的数。 1 class Solution { 2 public: 3 ...
分类:
编程语言 时间:
2019-12-29 15:10:52
阅读次数:
79
扩展:数组中只出现一次的两个数字 1、在上述题目中,数组中所有数字异或得到单独数字;那么在这个题目中,数组中所有数字异或得到这两个单独数字的异或; 2、我们只需要把数组中所有数字分成两组,并且每一组中的仅包含一个单独数字,那么就把这个问题转化为基础问题了,比如: 数组:[a,b,c,d,a,b]转换 ...
分类:
编程语言 时间:
2019-11-05 18:33:39
阅读次数:
85
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路 先将数组进行排序,由于除了两个数字之外,其他的数字都出现了两次,所以排序后的数组的前一个数字与后一个数字相同的话,i=i+2; 前一个数字与后一个数字不相同的话,则表明这个数字只出现一次 ...
分类:
编程语言 时间:
2019-08-18 11:51:14
阅读次数:
64
思路:用一个字典统计出每个数字出现的次数,然后遍历字典,找到只出现一次的 ...
分类:
编程语言 时间:
2019-08-10 14:11:37
阅读次数:
94
题目要求:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 首先:位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身。 当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。 依照这个 ...
分类:
编程语言 时间:
2019-07-22 15:14:08
阅读次数:
100
思路: 如果只有一个数字,那么就好求了,直接异或,结果就是这个数字。 试着把原数组分成两个子数组,每个数组包含一个只出现一次的数字,其他数字都是成对出现。 怎么拆分呢? 1、先把数组从头到尾异或,最终得到的结果是这两个数字异或的结果,由于这两个数字不一样,所以异或的结果肯定非0,即结果数字的二进制表 ...
分类:
编程语言 时间:
2019-07-17 20:28:49
阅读次数:
143
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 测试序列 功能测试(数组中有多对重复的数字;没有重复的数字;) 边界测试(数组小于2) 解题思路 异或运算 一个数字与其本身异或,结果为0。即:a^a=0 一个数字与0异或,结果为其本身。即a^0 ...
分类:
编程语言 时间:
2019-04-04 13:05:42
阅读次数:
163
题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。 思路 1.异或运算的一个性质:任何一个数字异或它自己都等于 0。也就是说, 如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出 ...
分类:
编程语言 时间:
2019-01-20 13:41:58
阅读次数:
296
题目:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 思路1:使用HashMap存上所有的数字,数字作为Key,Value为对应的出现次数。这种做法可以拓展到查找出现N次的数字。时间复杂服为O(N)+O(1) (建立Map的时间以及查找时间) 思路2: ...
分类:
编程语言 时间:
2019-01-01 11:01:55
阅读次数:
192
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 思路: 解法一: 哈希表 class Solution { public: void FindNumsAppearOnce(vector<int> data, int *num1, int *n ...
分类:
编程语言 时间:
2018-12-20 23:57:11
阅读次数:
356