41. First Missing Positive

Problem:

Given an unsorted integer array, find the smallest missing positive integer.

Example 1:

Input: [1,2,0]
Output: 3

Example 2:

Input: [3,4,-1,1]
Output: 2

Example 3:

Input: [7,8,9,11,12]
Output: 1

Note:

Your algorithm should run in O(n) time and uses constant extra space.

Solutions:

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        for (int i = 0; i < n; ++i) {
            int pendingVal = nums[i];
            nums[i] = -1;
            while (pendingVal >= 1 && pendingVal <= n && nums[pendingVal - 1] != pendingVal) {
                swap(pendingVal, nums[pendingVal - 1]);
            }
        }

        for (int i = 1; i <= n; ++i) {
            if (nums[i-1] != i) return i;
        }
        return n+1;
    }
};

results matching ""

    No results matching ""