T47 陣列中的重複數字(Java)

2021-09-02 23:15:09 字數 668 閱讀 3180

題目:在乙個長度為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之間,如果沒有該陣列中沒有重複的數...