美文网首页
41. First Missing Positive

41. First Missing Positive

作者: Al73r | 来源:发表于2017-10-08 11:44 被阅读0次

题目

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.

分析

这题是hard,但是感觉并不是很难啊。首先使用一个数组记录每个正整数是否出现过。然后从小到大检查该数组,输出第一个未出现的数字即可。

实现

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        if(nums.empty()) return 1;
        bool flag[nums.size()] = {false};
        for(int i=0; i<nums.size(); i++){
            if(nums[i]>0 && nums[i]<nums.size()+1)
                flag[nums[i]-1] = true;
        }
        for(int i=0; i<nums.size(); i++){
            if(!flag[i])
                return i+1;
        }
        return nums.size()+1;
    }
};

思考

在做题的过程中发现,使用auto比使用int型下标来遍历vector要慢。所以也许使用的时候要多注意。

相关文章

网友评论

      本文标题:41. First Missing Positive

      本文链接:https://www.haomeiwen.com/subject/pojeyxtx.html