class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int n = nums.size();
int i = 0;
for( ;i<n;){
if(nums[i] == i+1){
i++;
}else if(nums[i] <= 0 || nums[i] > n || nums[i] == nums[nums[i]-1]){
swap(nums[i],nums[n-1]);
--n;
} else {
swap(nums[i],nums[nums[i]-1]);
}
}
return i+1;
}
};
https://leetcode.com/problems/first-missing-positive/#/description