陣列中重複的數字

2021-10-17 05:22:03 字數 809 閱讀 3578

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

返回描述:

如果陣列中有重複的數字,函式返回true,否則返回false。

如果陣列中有重複的數字,把重複的數字放到引數duplication[0]中。(ps:duplication已經初始化,可以直接賦值使用。)

記乙個巧妙的方法。

從前向後遍歷整個陣列,對於當前元素numbers[i],使用雜湊法,使它應該在的位置為numbers[numbers[i]],標記這個位置的方法是:將這個位置的數字加n(因為數字的範圍都是0-n-1)。這樣就可以很方便的判斷乙個數字是否出現過(判斷它應該在的位置的值是否大於等於n)。

乙個問題是加了n之後怎麼還原這個位置原始的數字(這個位置的數字也需要對它應該在的位置進行標記),方法是直接對這個位置的數字模n,就可以還原這個位置本來的數字。這正是這種方法的巧妙之處。本質上是利用了陣列中的數字範圍都在0到n-1之間。學習。

public

class

solution

int n = numbers.length;

for(

int i =

0; i)else

}return

false;}

public

void

swap

(int

a,int i,

int j)

}

陣列 陣列中重複的數字

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