題目:[劍指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的範圍...