41 First Missing Positive
int firstMissingPositive(vector<int>& nums)
{
if (nums.empty()) return 1;
else if (nums.size() == 1) {
if (nums[0] <= 0 || nums[0] > 1)
return 1;
else if (nums[0] == 1) return 2;
}
const size_t n_size = nums.size();
for (int i = 0; i < n_size; i++) {
while (1) {
if (nums[i] < 0 || nums[i] >= n_size || i == nums[i]) break;
if (nums[i] == nums[nums[i]]) break;
swap(nums[i], nums[nums[i]]);
}
}
int i;
for (i = 1; i < n_size; i++) {
if (nums[i] != i) return i;
}
if (nums[0] == nums[i - 1] + 1) return nums[0] + 1;
return nums[i - 1] + 1;
}Last updated