劍指offer 陣列中重複的數字

2021-08-04 09:38:53 字數 711 閱讀 1925

題目:[劍指offer-陣列中重複的數字]

這個題我覺得其實它也沒說清楚,看了注釋才明白。

要得到所有重複的數字。

那我就判斷一下,第一次重複數字出現的時候得到,通過first標記來判斷是不是第一次。

class solution 

else

if( numbers[i-1] != numbers[i]) first = 1;

}return k > 0;

}};

發現自己在做的時候,對題目的理解不正確。

題目的意思是判斷陣列中是否存在重複的數字,如果有重複的,返回第乙個重複的就可以了。

這麼考慮,如果沒有重複的。那麼肯定是a[i] = i;這種情形。如果有,就不是了。

所以,對於任意乙個位置i,判斷a[i] == i,如果相等,則沒事。

如果,不相等,則loc = a[i],也即a[i]應該在loc的位置上。那麼判斷,a[i] == a[loc],則證明已經有重複元素。返回true。否則,交換。這樣可以保證a[loc] == a[i],即loc儲存的是本生的元素。對於a[i],繼續判斷。

class solution 

std::swap( numbers[i], numbers[loc] );}}

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的範圍...