时间复杂度(O( n))
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
for(int i=0;i<nums.size();++i)
while(nums[i]!=i+1)
if(nums[i]<=0||nums[i]>nums.size()||nums[nums[i]-1]==nums[i]){
nums[i]=-1;
break;
}else{
int tmp = nums[nums[i]-1];
nums[nums[i]-1] = nums[i];
nums[i] = tmp;
}
for(int k=0;k<nums.size();++k) if(nums[k]==-1)return k+1;
return nums.size()+1;
}
};