给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 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;
}
};