@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