classSolution { public: intfirstMissingPositive(vector<int> &nums) { int i, n; unordered_set<int> uset; for (int num : nums) { if (num > 0) uset.insert(num); } n = uset.size();
for (i = 1; i <= n + 1; i++) { if (!uset.count(i)) { break; } }
classSolution { public: intfirstMissingPositive(vector<int> &nums) { int i, n = nums.size(); // 把所有小于等于 0 的变成 n+1 for (i = 0; i < n; i++) { if (nums[i] <= 0) { nums[i] = n + 1; } }
for (i = 0; i < n; i++) { if (std::abs(nums[i]) <= n && nums[std::abs(nums[i]) - 1] > 0) { // 1..=n nums[std::abs(nums[i]) -1] *= -1; } }
for (i = 0; i < n; i++) { if (nums[i] > 0) { return i + 1; } } return n + 1; // 1..=n } };