41.缺失的整数

来源:互联网 发布:火山移动编程 编辑:程序博客网 时间:2024/04/28 11:15

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) {        if(nums.empty())            return 1;        sort(nums.begin(),nums.end());        int count = 0;        for(int i=0;i<nums.size();i++)        {            if(nums[i]<=0||(i>0&&nums[i]==nums[i-1]))            {                count++;                 continue;            }            if(nums[i]==i-count+1)               continue;            else               return i-count+1;        }        return nums.size()-count+1;    }};

性能:

这里写图片描述

参考答案:

class Solution {public:    int firstMissingPositive(vector<int>& nums) {        for (int i = 0; i < nums.size(); ++i) {            while (nums[i] > 0 && nums[i] <= nums.size() && nums[nums[i] - 1] != nums[i]) {                swap(nums[i], nums[nums[i] - 1]);            }        }        for (int i = 0; i < nums.size(); ++i) {            if (nums[i] != i + 1)                return i + 1;        }        return nums.size() + 1;    }};

性能:

这里写图片描述