在工作面试中有人问我这个问题,我一直在想正确的答案。
您有一个从0到n-1的数字数组,其中一个数字被删除,并替换为数组中已有的一个数字,该数字与该数字重复。我们如何才能在时间 O(n)中 检测到此重复项?
例如,的数组4,1,2,3将变为4,1,2,2。
4,1,2,3
4,1,2,2
时间 _O(n 2)_的简单解决方案是使用嵌套循环查找每个元素的重复项。
我们也有原始数组int A[N];创建另一个第二个数组bool B[N],类型为bool=false。迭代第一个数组并设置B[A[i]]=true是否为false,否则为bing!
int A[N];
bool B[N]
bool=false
B[A[i]]=true