classSolution { public: intfirstMissingPositive(vector<int>& nums){ int n = nums.size(); for (int i = 0; i < n; i++) { while (nums[i] != i + 1) { if (nums[i] <= 0 || nums[i] > n || nums[i] == nums[nums[i] - 1]) { break; } // nums[i] should be put on index nums[i] - 1 int idx = nums[i] - 1; swap(nums[idx], nums[i]); } } for (int i = 0; i < n; i++) { if (nums[i] != i + 1) { return i + 1; } } return n + 1; } };