每天(?)一道LeetCode(7) First Missing Positive

Array

041. First Missing Positive

Given an unsorted integer array, find the smallest missing positive integer.
就是 给一个整数数组,找到数组中缺少的最小正整数
我的理解:
如果这个数组中没有1,那么这个最小正整数就应该是1,
如果数组里面有1,那么当第一次有连续两个整数之间差值大于1时(前提是数组有序),缺失的最小正整数应该为前一个数加1,否则,如果数组是连续整数,那么缺失的最小值为最后一个数+1
然后就写出了一段很蠢的代码

class Solution:
    def firstMissingPositive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        if 1 not in nums:
            return 1
        elif len(nums)==1:
            return 2
        else:
            for i in range(len(nums)-1):
                if nums[i]<0:
                    continue
                if nums[i]<nums[i+1]-1:
                    return nums[i]+1
            return nums[-1]+1

参考了别人的代码,发现我的想法太直接了,傻呀
这段代码的核心思想是,遍历整个数组使得第i个位置上存放的值是i+1,然后再遍历一遍,返回第一个不符合前述条件的i+1

class Solution:
    def firstMissingPositive(self, A):
        i = 0
        while i < len(A):
            if A[i] > 0 and A[i] - 1 < len(A) and A[i] != A[A[i]-1]:
                A[A[i]-1], A[i] = A[i], A[A[i]-1]
            else:
                i += 1

        for i, integer in enumerate(A):
            if integer != i + 1:
                return i + 1
        return len(A) + 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,933评论 2 36
  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 2,860评论 0 10
  • 有时你走进风里 头上 是稻草人和铁皮士 脚下 是唐吉诃德 城墙塌了 城堡倒了 风里开满罂粟 火药烧过黎明 烧不过...
    久声阅读 191评论 2 2
  • 永远年轻,永远热泪盈眶。 ——《达摩流浪者》 1 上周末和一个久未联系的朋友见面,吃饭的时候聊起...
    莉卡卡阅读 574评论 1 3
  • 明天你在那等着我 我却不敢轻易靠近 对你 我总是小心翼翼 甚至是如履薄冰 不是没有勇气 是怕有太多的意外和失望 今...
    溺爱书香阅读 162评论 0 0