41. First Missing Positive
Description
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.
Example 1:
Input: nums = [1,2,0] Output: 3 Explanation: The numbers in the range [1,2] are all in the array.
Example 2:
Input: nums = [3,4,-1,1] Output: 2 Explanation: 1 is in the array but 2 is missing.
Example 3:
Input: nums = [7,8,9,11,12] Output: 1 Explanation: The smallest positive integer 1 is missing.
Constraints:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
Solutions
Solution: Iteration
- Time complexity: O(n)
- Space complexity: O(1)
JavaScript
js
/**
* @param {number[]} nums
* @return {number}
*/
const firstMissingPositive = function (nums) {
const n = nums.length;
for (let index = 0; index < n; index++) {
while (nums[index] > 0 && nums[index] <= n && nums[nums[index] - 1] !== nums[index]) {
const num = nums[index];
[nums[num - 1], nums[index]] = [nums[index], nums[num - 1]];
}
}
for (let index = 0; index < n; index++) {
const num = index + 1;
if (nums[index] !== num) return num;
}
return n + 1;
};