
Problem
Solution
Submissions
Smallest Missing Positive Integer
Certification: Basic Level
Accuracy: 66.67%
Submissions: 3
Points: 5
Write a C# program to find the smallest missing positive integer in an unsorted array of integers. Your algorithm should run in O(n) time and use constant extra space.
Example 1
- Input: nums = [1, 2, 0]
- Output: 3
- Explanation:
- Step 1: Replace all non-positive numbers and numbers greater than the array length (n=3) with a value outside the valid range (e.g., 4).
- Step 2: Use the array itself as a hash table by marking the presence of each valid positive number by making the value at index (i-1) negative.
- Step 3: After marking, the array would have presence of 1 and 2 indicated.
- Step 4: Find the first index i where the value is positive, which corresponds to the first missing positive integer i+1.
- Step 5: Since 1 and 2 are present, 3 is the smallest missing positive integer.
Example 2
- Input: nums = [3, 4, -1, 1]
- Output: 2
- Explanation:
- Step 1: Replace all non-positive numbers (-1) and numbers greater than the array length (n=4), which are 3 and 4, with a value outside the valid range (e.g., 5).
- Step 2: Use the array itself as a hash table by marking the presence of each valid positive number.
- Step 3: After marking, the array would have presence of 1 indicated but not 2.
- Step 4: Find the first index i where the value is positive, which corresponds to index 1 (for number 2).
- Step 5: Since 1 is present but 2 is not, 2 is the smallest missing positive integer.
Constraints
- 1 ≤ nums.length ≤ 10⁵
- -2³¹ ≤ nums[i] ≤ 2³¹ - 1
- Time Complexity: O(n)
- Space Complexity: O(1)
Editorial
My Submissions
All Solutions
Lang | Status | Date | Code |
---|---|---|---|
You do not have any submissions for this problem. |
User | Lang | Status | Date | Code |
---|---|---|---|---|
No submissions found. |
Solution Hints
- Use the array itself as a hash table to mark the presence of numbers
- Ignore all numbers that are out of range (non-positive or greater than array length)
- Use the sign of values at particular indices to mark the presence of positive numbers
- Scan the array again to find the first index with a positive value
- Handle edge cases carefully