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;
}
};