缺失的第一个正数

141 阅读1分钟

给定一个未排序的整数数组,找出其中没有出现的最小的正整数。

示例 1:

输入: [1,2,0]
输出: 3

示例 2:

输入: [3,4,-1,1]
输出: 2

示例 3:

输入: [7,8,9,11,12]
输出: 1

class Solution:
    def firstMissingPositive(self, nums: List[int]) -> int:
        N = len(nums)
        for i in range(N):
            if nums[i] <= 0:
                nums[i] = N + 1
        ni = 0
        for i in range(N):
            ni = abs(nums[i]) - 1
            if ni < N:
                nums[ni] = -abs(nums[ni])
        for i in range(N):
            if nums[i] > 0:
                return i + 1
        return N + 1