First Missing Positive
First Missing Positive #hard
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 1:
Input: nums = [1,2,0]
Output: 3
Example 2:
Input: nums = [3,4,-1,1]
Output: 2
Example 3:
Input: nums = [7,8,9,11,12]
Output: 1
Constraints:
-
1 <= nums.length <= 5 * 105
-
-231 <= nums[i] <= 231 - 1
Solution:
分析问题:对于长度为 n 的 array,最大的 missing positive 可能是几
这个example我们发现是 9,最大为 n+1. 最小为 1.
这种就考虑用 value hash to index 的方法来做 #value_hash_to_index
- 对于所有的 <=0 和 >= n+1 的数都设置为 0
- 遍历 array,标记
nums[ nums[i] ] = -1 * abs(nums[nums[i]])*
,使其为负来标记存在 - 最后遍历,寻找 index 里是 非负数的 格子,得到答案
1 | class Solution: |
Comments