陣列 陣列中的重複數字

2022-07-20 17:45:13 字數 1124 閱讀 2226

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

陣列的長度為 n 且所有數字都在 0 到 n-1 的範圍內,我們可以將每次遇到的數進行"歸位",當某個數發現自己的"位置"被相同的數佔了,則出現重複。

掃瞄整個陣列,當掃瞄到下標為 i 的數字時,首先比較該數字(m)是否等於 i,如果是,則接著掃瞄下乙個數字;如果不是,則拿 m 與第 m 個數比較。如果 m 與第 m 個數相等,則說明出現重複了;如果 m 與第 m 個數不相等,則將 m 與第 m 個數交換,將 m "歸位",再重複比較交換的過程,直到發現重複的數

舉個栗子:

以陣列 為例

當 i = 0 時,nums[i] = 2 != i,判斷 nums[i] 不等於 nums[nums[i]],交換 nums[i] 和 nums[nums[i]],交換後陣列為:

此時 i = 0,nums[i] = 1 != i,判斷 nums[i] 不等於 nums[nums[i]],交換 nums[i] 和 nums[nums[i]],交換後陣列為:

此時 i = 0,nums[i] = 3 != i,判斷 nums[i] 不等於 nums[nums[i]],交換 nums[i] 和 nums[nums[i]],交換後陣列為:

此時 i = 0,nums[i] = 0 = i,繼續下一組

當 i = 1,nums[i] = 1 = i,繼續下一組

當 i = 2,nums[i] = 2 = i,繼續下一組

當 i = 3,nums[i] = 3 = i,繼續下一組

當 i = 4,nums[i] = 2 != i,判斷 nums[i] 等於 nums[nums[i]],出現重複,賦值返回

function

duplicate(numbers, duplication)

for (let i=0;i)

let temp=numbers[i]

numbers[i]=numbers[temp]

numbers[temp]=temp}}

return

false

}

陣列 陣列中的重複數字

題目描述 給定乙個長度為n的陣列,所有的陣列都在0到n 1的範圍內,請找出陣列內的任意乙個重複數字。分析 1.將陣列排序,然後從頭遍歷到第乙個重複數字為止 2.由於陣列長度為n且範圍是 0,n 1 那麼當陣列沒有重複元素時,將其排序的結果是對應下標裡的數字等於下標,則我們可以從arr 0 開始,若a...

陣列 陣列中的重複數字

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

陣列中重複數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中第乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。返回描述 如果陣列中有重複的數字,函式返回true,否則返回...