面試題3 陣列中重複的數字

2021-10-04 11:46:44 字數 554 閱讀 5013

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

雜湊表

int

findduplicatenum

(vector<

int> nums)

map[num]=1

;}return ret;

}

上述方法需要o(n)的空間複雜度。

利用數字的性質

//以下方法基於0~n-1的數字如果不重複,那麼沒乙個數字都能擺放到正確的位置,即0放在0處,n-1放到n-1處。

intfindduplicatenum

(vector<

int> nums)

}return-1

;}

上述演算法只需要o(1)的空間複雜度,但是要改變原來的陣列,對於時間複雜度,因為每個數最多比較兩次就能擺放到正確的位置,因此總的時間複雜度仍然是o(n)。

面試題3 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1.方法一 把輸入的資料進行排序,排序後再判斷有無重複的數字,時間複雜...

面試題3 陣列中重複的數字

面試題3 找出陣列中重複的數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100...

面試題3 陣列中重複的數字

leetcode面試題3 思路1 建立乙個陣列,將原陣列元素當做下標統計次數 int findrepeatnumber int nums,int numssize count times for int i 0 i numssize i no such element return 1 思路2 排序...