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 @ 2016-10-13 10:02  wxquare  阅读(110)  评论(0编辑  收藏  举报