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 i = 0;
        int size = nums.size();
        while (i < size) {
            if(nums[i] == i + 1)
                i++;
            else if(nums[i] < i+1 || nums[i] > size || nums[i] == nums[nums[i]-1] ){
                nums[i] = nums[--size];
            }else{
                swap(nums[nums[i]-1],nums[i]);
            }
        }
        return i+1;
    }
};
复制代码

 

posted @   wxquare  阅读(110)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示