在一個長度爲n的數組裏的全部數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每一個數字重複幾回。請找出數組中任意一個重複的數字。 例如,若是輸入長度爲7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。java
這道題其實感受不難,其實咱們只要使用一個長度爲n的boolean型數組,將源數組中的值當下標,若是其出現過的話,就在boolean數組中將其置true,若是再次出現了,就能夠直接返回了數組
public boolean duplicate(int[] numbers, int length, int[] duplication) {
if (numbers == null || numbers.length <= 0) {
return false;
}
boolean[] vis = new boolean[numbers.length];
int length = numbers.length;
for (int i = 0; i < length; i++) {
if (vis[numbers[i]]) {
duplication[0] = numbers[i];
return true;
}
vis[numbers[i]] = true;
}
return false;
}
複製代碼