给定一个整数数组,其中一些数字重复1次或2次但一次重复3次,你如何找到它?

Sup*_*ane 17 algorithm

给定一个整数数组,其中一些数字重复1次,一些数字重复2次,只有一个数字重复3次,你如何找到重复3次的数字.不允许使用哈希.算法的复杂度应为O(n)

pol*_*nts 5

我假设数组没有排序,或者类似,重复的数字不会出现在一个连续的运行中.否则,问题实际上是微不足道的:只需使用大小为3的窗口扫描数组一次,如果该窗口中的每个数字相同,那么这是在一次连续运行中重复3次的数字.

如果重复分散,则问题变得更加有趣.

由于这是家庭作业,我只会给你一个提示.

这个问题是你给出一组未排序整数的表兄弟,所有数字都出现偶数次,除了出现奇数次的数字.

O(N)通过执行数组中的所有数字的异或,可以很容易地找到该数字; 结果是出现奇数次数.

这有效的原因是x xor x = 0.

例如,3 xor 4 xor 7 xor 0 xor 4 xor 0 xor 3 = 7.

  • 我对你打算如何使用xor感兴趣,因为这次你有更多的数字可以出现奇数次(有些数字可以出现一次,然后有一次出现3次). (10认同)
  • @polygenelubricants:我们现在可以得到答案吗? (3认同)
  • 由于x + 2x = 3x,这个问题比基地2中的简单XOR情况要困难得多.期待看到你的证据多基因...... (2认同)