在一個長度爲n的數組裏的全部數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每一個數字重複幾回。請找出數組中任意一個重複的數字。 例如,若是輸入長度爲7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。數組
從頭至尾掃描整個數組,掃描到下標爲i時,其值爲m,比較m是否等於i,若是是,接着掃描下一個數字;若是不是,將它與第m個數相比,若是它和第m個數字相等,就找到一個重複的數字。code
public static boolean Duplicate(int array[]){ //判斷數組是否爲空 /*if(array.length == 0){ return false; }*/ if(array == null || array.length<=0){ return false; } for(int i=0;i<array.length;i++){ if(array[i]>=array.length || array[i]<0){ return false; } } for(int i=0;i<array.length;i++){ while(i!=array[i]){ if(array[i] == array[array[i]]){ System.out.println(array[i]); return true; } else{ int temp = array[i]; array[i] = array[array[i]]; array[temp] = temp; } } } return false; }
參考:《劍指Offer》static