判断数组中是否有重复元素
|
0
4 答886 看 |
一个数组,下标从0到n,元素为[0,n]的整数 请写个函数判断其中是否有重复元素。 要求空间复杂度O(1),时间复杂度O(n) |
|
1
|
利用原数组中元素取负作为标志,标志哪个数曾出现过,例如: A[i]=25,则A[25]*=-1,因此下次遇到A[j]=25时,则到A[25]中发现A[25]<0表示25这个数曾出现过,因此重复
|
|||||||||
|
0
|
设f(n)=0^1^2^...^n^a[0]^...^a[n] |
|||||||||
|
0
|
又来一个解法,从0开始,如果a[0]=x,那么将x放在a[x]中(放进去之前进行一次比较),原来的a[x]为y的话,就将y元素放在a[y]里,就这么一直下去,每一次这么做的时候进行一下是否相等的比较,如果遇到相等则有重复,如果一直到了n步仍然没有重复,则就没有重复的元素
|
|||||||||
|
0
|
用bit数组 |
250x |

