zoukankan      html  css  js  c++  java
  • leetcode_41. 缺失的第一个正数

    给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
    进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?
    示例 1:
    输入:nums = [1,2,0]
    输出:3
    示例 2:
    
    输入:nums = [3,4,-1,1]
    输出:2
    示例 3:
    
    输入:nums = [7,8,9,11,12]
    输出:1
     
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/first-missing-positive
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    class Solution:
        def firstMissingPositive(self, nums: List[int]) -> int:
            n=len(nums)
            #如果1不在列表中,最小正数是1
            if 1 not in nums:
                return 1
            #所有0或负数全变为1
            for i in range(n):
                if nums[i]<=0:
                    nums[i]=1
            #将值对应的位置的值做标记(变为负数)
            for x in nums:
                if abs(x)<=n:
                    nums[abs(x)-1]=-abs(nums[abs(x)-1])
            
            for i in range(n):
                if nums[i]>0:#大于0 表示没有做标记,说明该数不存在
                    return i+1
            
            return n+1
    
  • 相关阅读:
    Lombok 安装、入门
    Centos 6.5中使用yum安装jdk
    Mysql规范和使用注意点(转)
    Java编码规范
    windows2016重新配置sid
    Postman POST接口请求无法获取数据
    微信修改密码
    SQL事务
    .net时间格式化
    SQL查询列是否有重复值
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/14403358.html
Copyright © 2011-2022 走看看