First Missing Positive LeetCode solution in C++

1
class Solution {
2
public:
3
int firstMissingPositive(vector<int> &nums) {
4
int n = nums.size();
5
for (int i = 0; i < n; i++) {
6
if (nums[i] == i + 1 || nums[i] <= 0 || nums[i] > n) continue;
7
while (nums[i] != i + 1 && nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {
8
swap(nums[i], nums[nums[i] - 1]);
9
}
10
}
11
int ans = -1;
12
for (int i = 0; i < n; i++) {
13
if (nums[i] != i + 1) {
14
ans = i + 1;
15
break;
16
}
17
}
18
if (ans == -1) {
19
return n + 1;
20
} else {
21
return ans;
22
}
23
}
24
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0