given an unsorted integer array, find the first missing positive integer.
for example,
given[1,2,0]
return3
,
and[3,4,-1,1]
return2
.
your algorithm should run in o(n) time and uses constant space.
對於正數a[i],我們希望它能被放在第i個位置上,這樣子當我們找到a[i] != i時,我們就找到了想要的數。
當我們遍歷陣列的時候,如果我們發現a[i] != i,那麼我們就swap(a[a[i]], a[i]),讓a[i]放在正確的位置上。而對於交換之後的a[i],我們繼續做這個操作,直至交換沒有意義為止。沒有意義表示當前數不是正數,或超過陣列長度,或與a[a[i]]相等。我們不關心這些數被排在什麼位置。此外還要考慮如果整個陣列都是連續的正數,比如a = ,經過我們上面的排序之後會變成,因為a[1] == 1(從1開始對比),而a[2]超出範圍,所以函式會認為2之前的都出現過了而2沒有出現過,返回2。為了防止把正確的數"擠"出陣列,我們讓a[a[i]-1]與a[i]交換,然後比較i+1和a[i]。
class solution
for (i = 0; i < n; i++) if (a[i] != i+1) break; // 尋找第乙個丟失的正數
return i+1;
}};
找到第乙個丟失的正數
given an unsorted integer array,find the first missing positive integer.for example,given 1,2,0 return3,and 3,4,1,1 return2.此題關鍵在於理解first missing posi...
尋找丟失的第乙個正整數
一道題目 給出乙個無序的正數陣列,找出其中沒有出現的最小正整數。樣例 如果給出 1,2,0 return3 如果給出 3,4,1,1 return2 今天和同事討論了一道演算法題,就是給定乙個陣列,找到這個陣列裡沒有出現的最小的正整數,這道題看起來,可以先排序,然後直接就可以找到最小正整數,但是複雜...
缺失的第乙個正數
給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 示例 3 輸入 7,8,9,11,12 輸出 1 說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。方法一 不是最優 function firs...