First Missing Positive

int firstMissingPositive(vector<int>& nums) {

if(nums.empty()) return 1;

int i=0;

while(i<nums.size()){

if(nums[i]!=i+1&&nums[nums[i]-1]!=nums[i]&&nums[i]>0&&nums[i]-1<nums.size()){

swap(nums[nums[i]-1],nums[i]);

}

else

i++;

}

for(int j=0;j<nums.size();j++){

if(nums[j]!=j+1)

return j+1;

}

return nums.size()+1;

}

Last updated

Was this helpful?