zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 33-1

    First Missing Positive

    要点:因为值是range固定的,所以利用了slot的index作为mark。注意内循环的条件是目标的value和index不匹配而不是当前值所在slot的index,因为当前slot对应的值可能不存在,就算存在,也应该由其他slot移动过来。
    错误点:

    • 值的有效范围是1到len(nums),所以如果全有,返回len(nums)+1
    • 注意下标的范围是0到len(nums)-1,所以在对应下标和值时要做范围检查。
    class Solution(object):
        def firstMissingPositive(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            for i in range(len(nums)):
                while nums[i]>0 and nums[i]<=len(nums) and nums[i]!=nums[nums[i]-1]:
                    tmp = nums[nums[i]-1]
                    nums[nums[i]-1]=nums[i]
                    nums[i]=tmp
                
            for i in range(len(nums)):
                if nums[i]!=i+1:
                    return i+1
                    
            return len(nums)+1
    
  • 相关阅读:
    Basic GC Tuning
    程序员如何少走弯路,更好的提升技术。
    WPF 多线程
    IOC
    一句话概括WPF知识点
    WPF数据绑定 Binding
    WPF命令
    WPF依赖属性
    WPF路由事件
    WPF绘图和动画
  • 原文地址:https://www.cnblogs.com/absolute/p/5678178.html
Copyright © 2011-2022 走看看