码迷,mamicode.com
首页 > 其他好文 > 详细

lc 41. First Missing Positive

时间:2019-01-10 15:31:55      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:missing   wap   避免   type   复杂度   比较   问题   现在   osi   

https://leetcode.com/problems/first-missing-positive/

O(1)空间复杂度,找到最小的没有出现在nums中的正整数。

其实算不上严格的swap,因为不用交换,当前的位置上如果不是正确放置的(不是正确放置:nums[i]!=i)那么,就把这个数字放到正确的位置上去,不会有死循环

因为你永远不会重复处理同一个数字

小技巧:

1.强行添加一个0,把问题变成i==nums[i]的问题,否则比较复杂

2.强行添加一个len(nums)+10,保证问题的answer在len(nums)之内。就是避免给你[2,3,4,1]这种答案为5在nums之外的情况

3.while比递归好看

代码:

class Solution:
    def firstMissingPositive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums+=[0,len(nums)+10]
        for i in range(len(nums)):
            n=nums[i]
            while 0<=n<len(nums) and n!=nums[n]:
                next=nums[n]
                nums[n]=n
                n=next
        for i in range(len(nums)):
            if nums[i]!=i:
                return i

 

lc 41. First Missing Positive

标签:missing   wap   避免   type   复杂度   比较   问题   现在   osi   

原文地址:https://www.cnblogs.com/waldenlake/p/10249794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!