陣列中重複的數字

2022-05-04 04:00:08 字數 720 閱讀 2945

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

正常思路:用乙個bit型別的陣列,   長度為n的陣列,假如遍歷到了3,那就把arr[3]設定為1,下一次又找到3了,看arr[3]為1.說明3出現過了 ,沒有出現過就arr[2]設定為1

這個時間複雜度為o(n)空間複雜度為o(n)。     可以使用本身的陣列,不申請輔助空間,這樣時間複雜度為n,空間複雜度為1.

思路:把從前到後的每乙個數當做是陣列的索引來用,通過這個索引找到那個位置,把那個位置上的數字加上n。從前往後遍歷的過程中找索引的時候,遇到比n大的數字,就把他減去n,當做索引(陣列裡的數字不變,只是用陣列裡的數字減去n當做索引來找陣列中的位置),在通過索引找數時,如果發現找到的這位已經是大於n的了,那說明之前通過同樣的索引已經找到過他了,又因為索引是從陣列中找的,那麼肯定陣列中一定有兩個相同的,那就是這個索引。

時間複雜度o(n),空間複雜度o(1)做法

public

class

solution

if(numbers[index]>length)

else

}duplication[0]=-1;

return

false

; }

}

陣列 陣列中重複的數字

在乙個長度為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 因為陣列中...