找出重复3遍的数

来源:互联网 发布:云计算和大数据 编辑:程序博客网 时间:2024/06/06 02:34

题目描述

在整型数组中,有一个数重复出现了3遍,其他数重复出现了2遍,找出这个重复3遍的数。要求用O(1)的空间和至多O(nlogn)的空间复杂度。

思路1

比较简单的思路就是用排序,符合题目要求的可以用堆排序,然后顺序扫描一遍就可以了,这里不再说明。

思路2

由于其他数都出现了偶数遍,我们需要的数出现了奇数遍,而出现偶数遍的数是我们不需要的,可以借助异或的性质,即

  • 两个相同的数异或为0
  • 某个数异或0仍为子集
  • 异或是满足交换律的

所以可以从头到尾把全部数异或一遍,最后得到的数一定是出现3遍的数。

以此纪念不长记性的脑子-,-

0 0
原创粉丝点击