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;
}
};
浙公网安备 33010602011771号