LeetCode 41 First Missing Positive (Python)

Posted by 小明MaxMing on September 30, 2020

题目

Given an unsorted integer array, find the smallest missing positive integer.

解题思路

如果数组的长度是l,那么结果最大就是l+1,所以吧所有负数和大于l+1的数,都变成0,给数组加一个0(处理0的情况),然后遍历数组,把数对应下标的数加上l+1,最后再遍历一遍,第一个小于等于l的数,就是结果

代码

class Solution:
    def firstMissingPositive(self, nums: List[int]) -> int:
        nums.append(0)
        l = len(nums)
        if l == 1:
            return 1
        for i in range(l):
            if nums[i] < 0 or nums[i] >= l:
                nums[i] = 0
        for i in range(l):
            nums[nums[i] % l] += l
        for i in range(1, l):
            if nums[i] < l:
                return i
        return l

视频讲解 YouTube<--欢迎点击订阅

视频讲解 bilibili<--欢迎点击订阅