通過前后交換查找重復(fù)的數(shù)字

即判斷A[i]是否等于i
**41. First Missing Positive **
Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.
代碼如下:

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        if(n==0)
          return 1;
        
        for(int i=0;i<n;i++)
        { 
           if(nums[i]>0&&nums[i]<n) //要把1,2,3… 放在最前面,這樣有利于后續(xù)的判斷
           {
               if(nums[i]-1==i)
                 continue;
               else if(nums[nums[i]-1]!=nums[i])
               {
                   int temp = nums[nums[i]-1];
                   nums[nums[i]-1] = nums[i];
                   nums[i] = temp;
                   i--;
               }
           }
        }
        for(int i=0;i<n;i++)
        {   
            if(nums[i]!=i+1)
              return i+1;
        }
        return n+1;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容