41. First Missing Positive
https://leetcode.com/problems/first-missing-positive/
js
/**
* @param {number[]} nums
* @return {number}
*/
var firstMissingPositive = function(nums) {
for (let i = 0; i < nums.length; i++) {
while (nums[i] > 0 && nums[i] <= nums.length && nums[i] !== i + 1 && nums[i] !== nums[nums[i] - 1]) {
var temp = nums[i]
nums[i] = nums[nums[i] - 1]
nums[temp - 1] = temp
}
}
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== i + 1) {
return i + 1
}
}
return nums.length + 1
}
py
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
for i in range(len(nums)):
while nums[i] > 0 and nums[i] <= len(nums) and nums[i] != i + 1 and nums[i] != nums[nums[i] - 1]:
temp = nums[i]
nums[i] = nums[nums[i] - 1]
nums[temp - 1] = temp
for i in range(len(nums)):
if nums[i] != i + 1:
return i + 1
return len(nums) + 1