Given an unsorted integer array nums, return the smallest positive integer that is not present in nums.
You must implement an algorithm that runs in O(n) time and uses O(1) auxiliary space (you may modify the input array).
We use analytics and advertising cookies to understand how the site is used and whether our ads on Facebook and Instagram work. They are set only if you accept. See our Privacy Policy for details.
Given an unsorted integer array nums, return the smallest positive integer that is not present in nums.
You must implement an algorithm that runs in O(n) time and uses O(1) auxiliary space (you may modify the input array).
A hard arrays & hashing problem, graded against 7 test cases (4 of them hidden).
Hash maps and sets to trade memory for time - the most common first instinct in interviews.
Reach for it when you see: "Have I seen this before?", counting occurrences, or an O(n²) scan you want to make O(n).
More Arrays & Hashing problems →Only values in `1..n` matter, so use the array itself as a hash table: repeatedly swap `nums[i]` into its home slot `nums[i] - 1` while it's in range and the destination doesn't already hold the right value (the duplicate guard also prevents infinite swap loops). Each swap places at least one value permanently, so the total work is O(n) despite the nested loop. A final scan finds the first slot whose value isn't `i + 1`.
The full reference solution in every supported language stays in the editor above - reveal it there once you have had a real attempt.
Read off this problem's own test suite, so these are the cases a submission actually has to survive.
These apply to the pattern as a whole, not just this problem.