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

    给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

    示例 1:

    输入: [1,2,0]
    输出: 3
    示例 2:

    输入: [3,4,-1,1]
    输出: 2
    示例 3:

    输入: [7,8,9,11,12]
    输出: 1
     

    提示:

    你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/first-missing-positive
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    O(nlogn)

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

    O(n)

    class Solution:
        def firstMissingPositive(self, nums: List[int]) -> int: 
            if not nums:return 1
            length =len(nums)
            if length == 1:
                if 1 in nums:
                    return 2
                else:
                    return 1
            i=0
            temp = 0
            ma = max(nums)
            
            while i < length:
                if nums[i] <= 0 or nums[i] == i or nums[i] >=length or nums[nums[i]] == nums[i]:
                    i += 1
                else:
                    nums[nums[i]],nums[i] = nums[i],nums[nums[i]]
    
            for i in range(1,length):
                if nums[i] != i:
                    return i 
            
            if ma == length:
                return length+1
            return nums[-1] +1

    好像这个也是O(n)没毛病。。。

    class Solution:
        def firstMissingPositive(self, nums: List[int]) -> int: 
            nums=set(nums)
            for i in range(1,2**31):
                if i not in nums:
                    return i
  • 相关阅读:
    UVa11218 KTV
    counting sort 计数排序
    Uva10474
    Uva110 Meta-Loopless Sorts
    Uva592 Island of Logic
    Qtwebkit flashplayer插件问题
    C++程序员的javascript教程
    Binary Search
    排列组合生成算法
    【Linux】mkdir命令
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13859412.html
Copyright © 2011-2022 走看看