First Missing Positive
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0]
return 3
,
and [3,4,-1,1]
return 2
.
Your algorithm should run in O(n) time and uses constant space.
class Solution { public: int firstMissingPositive(vector<int>& nums) { int i = 0; int size = nums.size(); while (i < size) { if(nums[i] == i + 1) i++; else if(nums[i] < i+1 || nums[i] > size || nums[i] == nums[nums[i]-1] ){ nums[i] = nums[--size]; }else{ swap(nums[nums[i]-1],nums[i]); } } return i+1; } };