一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间复杂度和O(n)时间复杂度。
思路:本题跟前面的“数组中缺少的数”文章的思路一样,利用了数值范围为[0, n-1]这个属性。
int fun(int a[], int n)
{
for(int i = 0; i < n; i++)
{
a[a[i]%n] += n;
}
int label = 2*n;
for (int i = 0; i < n; i++)
{
if (a[i] >= label)
{
return i;
}
}
return -1;
}