在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
思路1:用乙個新陣列記錄每個數字出現的個數。因為所有數字都在0到n-1範圍內,新陣列大小可以設為n,相應的下標對應原陣列中的數字。題目中只需要輸出第乙個重複的數字,則原陣列從頭遍歷,對應的新陣列的標記不為0就可以確定是重複數字。
class solution
int* temp = new int[length];
for(int i=0;i思路2:不借助額外陣列,將原陣列進行重排。由於所有數字都在0到n-1範圍內,那麼可以將陣列的下標和數字對應起來。比如numbers[0]=0; numbers[1]=1; 從頭遍歷陣列,將數字調到相應的位置上,比如numbers[0]=2,numbers[0]和numbers[2]交換,直到numbers[0]=0,再判斷下一位。如果數字不在其對應位置,且對應位置已經有該數字了,則判斷該數字是重複數字。
class solution
int i=0;
while(iint temp=numbers[i];
numbers[i]=numbers[temp];
numbers[temp]=temp;}}
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 因為陣列中...