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