当其他数字出现两次以上时,在列表中查找单个数字

Bor*_*ris 6 algorithm

查找列表中的单个数字扩展了该问题

如果我将问题扩展到这个问题:找到一个在列表中只出现一次的数字的最佳算法是什么?所有其他数字恰好出现k次?

有没有人有好的答案?

例如,A = {1,2,3,4,2,3,1,2,1,3},在这种情况下,k = 3.如何在O(n)中得到单个数字"4"时间和空间复杂度是O(1)?

Jay*_*ram 2

如果除了偶数之外的数字lonely number恰好出现在偶数计数中(即 2、4、6、8...),则可以通过对XOR所有数字进行运算来解决给定的约束。但除此之外,O(1)它的空间复杂性只是在逗我。

如果除了您给定的限制之外,您可以使用这些方法来解决这个问题。

  1. 对数字进行排序并使用当前变量来获取当前数字的计数。如果它大于 1,则转到下一个数字,依此类推。空间 O(1)...时间 O(nlogn)
  2. 使用 O(n) 额外内存来计算每个数字的出现次数。时间 O(n)...空间 O(n)