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