41. 缺失的第一个正数
思路:利用去重排序,从1找出对应关系,不同即退出循环
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
if(nums.size()==0)
return 1;
if(nums.size()==1)
{
if(nums[0]<=0||nums[0]>=2)
return 1;
else if(nums[0]==1)
return 2;
}
sort(nums.begin(),nums.end());
vector<int>::iterator end_unique = unique(nums.begin(), nums.end());
nums.erase(end_unique, nums.end());
int ops=0;
bool flag=false;
for(int i=0;i<nums.size();i++)
{
if(nums[i]>=1)
{
flag=true;
ops=i;
break;
}
}
if(!flag)
return 1;
int ans=0;
bool flag1=false;
for(int i=ops,j=1;i<nums.size();i++,j++)
{
if(nums[i]!=j)
{
flag1=true;
ans=j;
break;
}
}
if(flag1)
return ans;
else
return nums[nums.size()-1]+1;
}
};