LeetCode - First Missing Positive

Description: https://leetcode.com/problems/first-missing-positive/description/

This problem requires finding the smallest missing positive integer in an unsorted array. The key challenge is achieving %O(N)% time and %O(1)% space complexity without using extra space for hash tables.

Key insights:

  • Since we're looking for the first missing positive integer, we only care about numbers in range %[1, N]%. We can mark presence of number i by making the element at index i-1 negative, effectively using the array itself as a hash table.

Algorithm steps:

  1. Replace non-positive and out-of-range numbers with n+2
  2. Use index i-1 to mark presence of number i by making element negative
  3. First positive number's index + 1 is the answer

Here's an interactive visualization demonstrating the algorithm:

Original Array:
Step 1: Replace non-positive and too large numbers by %N + 2%
Step 2: Mark positions by making numbers negative
Step 3: Find first positive number

Why it works:

  • Using indices as hash positions avoids extra space
  • Negative markers cleverly track seen numbers
  • Numbers > n can't be the answer, so safely ignored

Complexity:

  • Time: %O(N)%
  • Space: %O(1)%

You can find the full source code solution at https://github.com/vndee/dsa-python/blob/main/arrays/first_missing_positive.py. Please consider subscribing to my blog to stay updated with more algorithm tutorials and coding insights.

Subscribe to The Technician

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe