《劍指offer》 陣列中重複的數字

2021-10-09 11:24:34 字數 619 閱讀 9542

題目描述:

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

題解:首先題目給明了長度為n,數字範圍是0~n-1剛好是n個數字,如果沒有重複的數字,每個下標的對應的數字都不會相同,且其值應該和陣列的下標一致,發現該題的這個規律,可從此處著手。從頭開始給陣列排序,排序乙個陣列元素,判斷該數字是否和陣列中的其他元素有重複,如果有重複,就可照到此題的解,函式也就可以返回陣列元素值。若沒有發現重複,可一直迴圈到將第乙個數字排序完成。再在外層加乙個for迴圈遍歷陣列元素,則此題可就此完成。

class

solution

for(

int i =

0; i < len; i++)}

for(

int i =

0; i < len; i++

)else

swap

(nums[i]

, nums[nums[i]])

;}}return

false;}

};

劍指offer 陣列中重複的數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。class solution 考慮這種非法輸入 for i...

劍指offer 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。分析 雖然也ac了,但是沒仔細看題,可以利用題目已有條件做到更簡單的...

劍指offer 陣列中重複的數字

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