哪个号码出现一次?

时间:2016-11-01 04:24:35

标签: algorithm

  

给出2n-1个数字的列表:全部在1到n之间,除了一个之外的所有数字都出现两次。确定仅发生一次的数字。多种方式首选。

我认为问题是错误的,如何在不知道数字列表的情况下确定哪个数字?

1 个答案:

答案 0 :(得分:1)

  • [O(1)space,O(n)time] :只需取所有数字的XOR。由于除了一个数字之外所有数字都出现两次,因此这些数字的XOR将为零,并且单个出现的数字将是结果。

  • [O(1)space,O(n)time] :正如user3386109在评论中所述,我们可以将所有给定的数字相加并将其与范围[1, n]中的数字之和将为n*(n+1)(因为所有数字应该出现两次)。这两个数字的差异就是答案。

  • [O(n)space,O(n)time] :创建一个大小为n的数组,并将数组中所有元素的数量保持为相应的职位。最后,遍历数组,找到其计数仅为1的数字。