陣列中重複的數字,簡單分析

2021-10-06 13:45:04 字數 1204 閱讀 1050

找出陣列中重複的數字。

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

示例 1:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:2 <= n <= 100000

思路分析:

我們最容易想到集合,集合的元素一定是非空的,但是集合的開銷和維護比較大。直接用最簡單的bool陣列,如果數字出現過,直接返回數字,否則,將其標記為true即可。

class solution

else

}return-1

;}}

思路二:

這個我也是通過題解看到有大佬做出來的。

我們方法一雖然很簡單,但是缺點也很明顯,就是需要n大小的空間來儲存狀態。

我們可以通過檢測當前把當前資料作為索引,這個索引在陣列裡的值如果是自身,就返回即可,否則,一直交換,直到當前資料和其索引相同。

(因為資料保持在0-n-1之間,所以我們才可以保持這樣做而不會越界)

class

solution

else}}

return-1

;}private

boolean

valuenotequalindex

(int

nums,

int i)

private

boolean

selfequalvalueofselfasindexatarray

(int

nums,

int i)

private

void

swapselfandvalueofselfasindexatarray

(int

nums,

int i)

private

void

swap

(int

nums,

int index1,

int index2)

}

其實我們最後發現這兩個差不多,是因為我們用了函式的方式,再者,布林陣列的開銷很低,所以,差不多。

但是,我們可以在這個題找到一種思路,就是,資料自身置換而不利用額外的空間,這個思路在空間有限的時候挺重要的。

陣列 陣列中重複的數字

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

陣列中重複的數字

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

陣列中重複的數字

題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。思路 用雜湊表解決的時間複雜度和空間複雜度為o n 因為陣列中...