在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
//方法1:hashmap o(n) o(n)
class solution {
public:
// parameters:
// numbers: an array of integers
// length: the length of array numbers
// duplication: (output) the duplicated number in the array number
// return value: true if the input is valid, and there are some duplications in the array number
// otherwise false
bool duplicate(int numbers, int length, int* duplication) {
if(length<=0) return false;
unordered_mapum;
for(int i=0;i如果當前numbers[i]不在i位置
//---->(1)numbers[i]==i存在,那麼通過最多(n-1-i)次就能歸位,幾次交換就會歸位幾個元素到正確位置,從而跳出迴圈
//---->(2)numbers[i]==i不存在,那麼通過最多(n-1-i)次就能找到重複元素,跳出迴圈
//-->如果當前numbers[i]在i位置
//---->不進入迴圈,繼續下乙個位置i
//問題2:這個演算法為什麼是o(n)?
//看似for迴圈中還有一層while迴圈,時間複雜度可能是o(n^2),但是乙個while迴圈的n次迴圈導致後續
//for迴圈元素都在已歸位位置,不會進入while迴圈,因此while迴圈只是某幾次操作,對for迴圈整體來
//說,複雜度分攤,就是常數級別的複雜度,故整體複雜度為o(n)
陣列 陣列中重複的數字
在乙個長度為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 因為陣列中...