[关闭]
@lzb1096101803 2016-03-20T15:43:44.000000Z 字数 320 阅读 410

算法:数组中只出现一次的数字

数据结构和算法


一个整型数组里除了两个数字之外,其他数组都出现了两次,找出这两个只出现一次的数字,要求时间复杂度是O(n),空间负责度为O(1)

如果只有一个数字出现一次,其他都是两次,可以全部异或,最后得到的数字就是出现一次的

还是从头到尾异或每一个数字,最后得到是两个只出现一次的数字的异或结果
找出第一个结果为1的位记为第n位,然后将数组中这一位为1的分为1组 ,为0的分别1组,
对这两组数组分别异或,得到的两个数就是唯一出现 的两个数

比如数组{2,4,3,6,3,2,5,5}
其中2,3,5是出现两次,4,6出现一次
最后异或结果就是0010
然后第一个数组时{2,3,6,3,2}得到6
第二个数组时{4,5,5}得到4

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注