41. 缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
class Solution { public: int firstMissingPositive(vector<int>& nums) { int siz = nums.size(); if(!siz)return 1; int ans = INT_MAX; for(int i=0;i<siz;++i){ if(nums[i]>0)ans=min(ans,nums[i]); } if(ans>1)return 1; for(int i=0;i<siz;++i){ if(nums[i]<=0){ nums[i] = ans; } } int num = 0; for(int i=0;i<siz;++i){ if(nums[i]==0)continue; if(abs(nums[i])>siz)continue; else { if(nums[abs(nums[i])-1]>0)nums[abs(nums[i])-1] = -nums[abs(nums[i])-1],++num; } } if(num == siz)return siz+1; for(int i=0;i<siz;++i){ if(nums[i]>=0){ return i+1; } } return siz; } };
我身后空无一人,我怎敢倒下