ID | Title | Difficulty | |
---|---|---|---|
Loading... |
41. First Missing Positive
Hard
LeetCode
Array, Hash Table
Problem
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 <= 10^5$
- $-2^{31} <= nums[i] <= 2^{31} - 1$
Code
class Solution {
public int firstMissingPositive(int[] nums) {
if(nums == null || nums.length == 0) return 1;
for(int i = 0; i < nums.length; i++){
// 交换数字直到位置正确
while(nums[i] > 0 && nums[i] <= nums.length && nums[nums[i] - 1] != nums[i]){
int temp = nums[nums[i] - 1];
nums[nums[i] - 1] = nums[i];
nums[i] = temp;
}
}
for(int i = 0; i < nums.length; i++){
if(nums[i] != i + 1){
return i + 1;
}
}
return nums.length + 1;
}
}
按 <- 键看上一题!
40. Combination Sum II
按 -> 键看下一题!
42. Trapping Rain Water