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.

分析

这题是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要慢。所以也许使用的时候要多注意。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容