缺失的第一个正数

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

来源:https://leetcode-cn.com/problems/first-missing-positive/

法一:自己的方法,该方法用时少,但消耗内存大

思路:先将list逆序把小于0的去掉,再判断其长度若为0则返回1,再判断如果若最小值不为1则返回1,否则从2开始逐个判断,直到找到最小的正数为止,返回其值.

class Solution:
    def firstMissingPositive(self, nums) -> int:
        for i in nums[::-1]:
            if i <= 0:
                nums.remove(i)
        if len(nums) == 0:
            return 1
        if (min(nums) != 1):
            return 1
        else:
            k = 2
            while k > 0:
                if k not in nums:
                    return k
                k += 1
if __name__ == '__main__':
    duixiang = Solution()
    ww = duixiang.firstMissingPositive([7,8,9,11,12])
    print('结果是:', ww)
View Code