first-missing-positive.sh — zsh
arraysin-placecyclic-sort

Given an unsorted integer array nums, return the smallest missing positive integer.

The classic optimal solution runs in linear time and uses constant extra space by reusing the input array itself as bookkeeping.

Input / output

  • Input: nums: int[]
  • Output: int

Examples

  1. nums = [1,2,0] returns 3.
  2. nums = [3,4,-1,1] returns 2.
  3. nums = [7,8,9,11,12] returns 1.

Constraints

  • 1 <= nums.length <= 100000
  • -2^31 <= nums[i] <= 2^31 - 1

Follow-up Can you solve it in O(n) time and O(1) extra space, and explain why values outside the range 1..n can be ignored?

Examples
Example 1
Input: nums = [1,2,0]
Output: 3
Example 2
Input: nums = [3,4,-1,1]
Output: 2
Example 3
Input: nums = [7,8,9,11,12]
Output: 1
🔒 5 hidden
Running will execute all 8 cases, including 5 hidden ones.