xinyu04

导航

LeetCode First Missing Positive Map

Given an unsorted integer array nums, return the smallest missing positive integer.

You must implement an algorithm that runs in \(O(n)\) time and uses constant extra space.

Solution

我们只需要求出最小的缺失正数,找到一个下界即可:用 \(Map\) 记录原数组,然后从 \(1\) 遍历原数组个数的连续正数即可。

点击查看代码
class Solution {
private:
    map<int,int> mp;
public:
    int firstMissingPositive(vector<int>& nums) {
        int ans = 1;
        int n = nums.size();
        
        if(n==1){
            if(nums[0]<1)return 1;
            else if(nums[0]==1)return 2;
            else return 1;
        }
        int fg = 0;
        for(int i=0;i<n;i++){
            if(nums[i]<0)continue;
            else{
                mp[nums[i]]=1;
            }
        }
        for(int i=0;i<n;i++){
            if(!mp[ans])return ans;
            else ans++;
        }
        return ans;
    }
};

posted on 2022-07-11 20:06  Blackzxy  阅读(18)  评论(0编辑  收藏  举报