First Missing Positive
First Missing Positive
Cyclic Sort
Problem Statement
Given an unsorted integer array nums
, return the smallest missing positive integer. You must implement an algorithm that runs in O(n) time and uses constant extra space.
Example
Example 1:
Input: nums = [1,2,0]
nums: [1, 2, 0]
Output: 3
Output: 3
Solution
The problem can be solved in O(n) time and O(1) extra space using cyclic sort. The idea is to place each number in its correct position. For example, 1 should be at index 0, 2 at index 1, and so on. After sorting, we can iterate through the array to find the first number that is not in its correct place.
Algorithm Steps
- Iterate through the array. For each number, if it's within the range [1, n] and not in its correct place, swap it with the number at its correct index.
- Repeat this process until all numbers are in their correct places or are out of range.
- Iterate through the sorted array. The first index `i` where `nums[i] != i + 1` gives us the first missing positive, which is `i + 1`.
- If all numbers are in their correct places, the first missing positive is `n + 1`.
First Missing Positive
Cyclic Sort Approach
Input: nums = [1, 2, 0]
Output: ?
Progress1 / 1
Ready to start the visualization
Nums
1
2
0
First Missing Positive Solution