題目:在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
思考:第一想法是和前面某題類似 利用hashset 時間複雜度:o(n),空間複雜度:o(n)
//hashmap
public static boolean duplicate2(int numbers,int length,int duplication)
hashmapmap=new hashmap();
for(int i=0;i第二想法 排序 這個太費時 時間複雜度:o(nlogn),空間複雜度:o(1)
第三想法:這個題目的特殊性 即數字皆在0~n-1之間 也就是 若沒有重複資料 則是0,1,2,3.......n-1 於是可以讓0位上放0 1位上放1 k位上放k........時間複雜度:o(n),空間複雜度:o(1) 還未驗證
public static boolean duplicate(int numbers,int length,int duplication)
//先判斷是否滿足大小在0~n-1範圍
for(int i=0;i=length)
} for(int i=0;i參考:
陣列中重複數字
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中第乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。返回描述 如果陣列中有重複的數字,函式返回true,否則返回...
陣列中的重複數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1 排序 將陣列排序,然後掃瞄排序後的陣列即可。時間複雜度 o nl...
陣列中的重複數字
題目 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出的重複的數字2或者3。分析 陣列中的數字都在0 n 1之間,如果沒有該陣列中沒有重複的數...