【问题标题】:Given an array of integers, where every number appears thrice except one number appears twice, find the number that appears twice?给定一个整数数组,其中每个数字出现三次,除了一个数字出现两次,找到出现两次的数字?
【发布时间】:2017-07-26 19:34:05
【问题描述】:

这是“编程面试要素”中的一个问题。我看到这个问题发布了here,但接受的答案(或其他答案)不完整。

使用适用于 base 3 系统(在帖子中称为 xor3)的类似 XOR 的操作,您会得到 x xor3 x 的结果。但是,问题是要获得xxor3 定义为模 3 加法(其中数字以 3 为基数表示)

我们如何从x xor3 x 中取出x 部分?

【问题讨论】:

    标签: arrays duplicates operators bitwise-operators xor


    【解决方案1】:

    如果您再次遍历数字数组会怎样?假设您在第一次迭代后拥有的值是 a = x xor3 x

    遍历数组中的所有条目,xor3 每个值都带有a

    for y in arr:
        if y xor3 a == 0:
            print y
            break
        else
            continue
    

    目前我认为这是一个幼稚的解决方案。考虑到每个 xor3 为 O(1) 和 O(1) 内存,这仍然是 O(n)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2021-12-06
      • 1970-01-01
      • 2020-09-17
      • 2023-01-03
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多