Given an unsorted integer array, find the smallest missing positive integer.
Example 1:
Input: [1,2,0]
Output: 3
提示:通过for while swap将每个正数放到正确的位置,然后for循环return第一个不正确数的位置,都正确return size + 1。
答案:
class Solution { public: int firstMissingPositive(vector<int>& nums) { int n = nums.size(); for(int i = 0; i < n; i++){ while(nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) swap(nums[i], nums[nums[i] - 1]); } for(int i = 0; i < n; i++){ if(nums[i] != i + 1) return i + 1; } return n + 1; } };