leetcode 41. 缺失的第一个正数

在这里插入图片描述

我的答案:

class Solution:
    def firstMissingPositive(self, nums):
        if len(nums) == 0:
            return 1
        temp = max(nums)
        if temp<1:
            return 1
        for i in range(1,temp+1):
            if i not in nums:
                return i
        return temp+1

在这里插入图片描述

官方答案剑走偏锋(强行哈希)

    def firstMissingPositive1(self, nums):
        temp = len(nums)
        if 1 not in nums:
            return 1
        if temp == 1:
            return 2
        for i in range(temp):
            if nums[i] <=0 or nums[i]>=temp+1:
                nums[i] = 1
        for i in range(temp):
            a = abs(nums[i])
            if a == temp: //如果值等于数组的长度,就将数组[0]设置为负数
                nums[0] = - abs(nums[0])
            else:
                nums[a] = - abs(nums[a]) //否则有这个数为索引,将对应的值设置为负数
        for i in range(1, temp)://先判断1len(nums)-1有没有
            if nums[i] > 0:
                return i
        if nums[0] > 0://再判断len(nums)存在吗
            return temp

        return temp + 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值