一尘不染

在数组中查找特殊数字

algorithm

数组中有许多数字,每个数字出现3次,但一个特殊数字出现一次。问题是:如何在数组中找到特殊数字?
现在,我只能提出一些使用基数排序和快速排序的方法,而这些方法无法利用问题的性质。所以我需要其他一些算法。
谢谢你的帮助。


阅读 244

收藏
2020-07-28

共1个答案

一尘不染

将数字按位添加mod 3,例如

def special(lst):
    ones = 0
    twos = 0
    for x in lst:
        twos |= ones & x
        ones ^= x
        not_threes = ~(ones & twos)
        ones &= not_threes
        twos &= not_threes
    return ones
2020-07-28