03 陣列中重複的數字

2021-09-23 22:00:20 字數 740 閱讀 9275

在乙個長度為 n 的陣列裡的所有數字都在 0 到 n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。

例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

第一反應就是寫巢狀的for迴圈,但是可想而知,必然時間複雜度不滿足需求…

題目要求時間複雜度o(n),空間複雜度o(1)。因此不能使用排序的方法,也不能使用額外的標記陣列。

思路:對於這種陣列元素在[0, n-1]範圍內的問題,可以將值為i的元素調整到第i個位置上進行求解。

以(2,3,1,0,2,5)為例,第乙個「2」,將其與index=2處的「1」進行位置交換,然後再看此時index = 0處的「1」,將其交換到index = 1的位置,如此繼續,到第二個「2」出現時,會發現index = 2的位置已經有了2了,所以這是乙個重複的數字。

for迴圈遍歷陣列:

——判斷元素值是否與下標index相等

————若不相等:

——————判斷 numbers[i] 與 numbers[numbers[i]]是否相等:

————————若相等,說明存在重複數字;

————————若不相等,進行swap交換;

——若相等,則繼續遍歷;

class

solution

else}}

return

false;}

};

陣列中重複的數字(03)

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

03 陣列中的重複數字

題目描述 劍指offer3 在乙個長度為 n 的陣列裡的所有數字都在 0 到 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。示例input output 2首先放乙個時間複雜度 o n 空間複雜度 o 1 的方法,因為...

03 找出陣列中重複的數字 python

題目 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。數字中的某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出時重複的數字2或者3。1 使用字典 def duplicate nums dic ...