在线性时间内查找数组中的重复项

时间:2018-11-12 17:29:09

标签: arrays algorithm search duplicates

问题:给您一个数组n + 1个整数,范围为1..n。至少一个数字重复。所有数组值可以相同。在线性时间和恒定空间中打印所有重复项。数组无法修改。

一个显而易见的解决方案是创建一个默认值为false的位数组,在bitarray [array [i]]中为每个元素设置1,然后检查它是否已经为1。这需要额外的空间,所以不好。我的另一个想法是:通过哈希将数组重新排序,并检查当前元素和元素array [hash%n]是否相等。这也不好,因为我们不能修改原始数组。现在我认为这看起来像是不可能完成的任务。甚至有解决方案吗?

0 个答案:

没有答案