题解 | #牛群中未找到最小的正整数#

牛群中未找到最小的正整数

https://www.nowcoder.com/practice/99efff129e2244e8af751bbe91a2f159

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
class Solution:
    def findMinMissingPositive(self , nums: List[int]) -> int:
        # write code here

        n =len(nums)

        #第一次遍历,将所有非正整数(<= 0)改为 n + 1
        for i in range(n):
            if nums[i] <= 0:
                nums[i] = n+1

        # 第二次遍历:将出现的正整数所对应的索引位置的数改为负数
        for i in range(n):
            num = abs(nums[i])
            if 1 <= num <= n:
                nums[num -1] = -abs(nums[num-1])

        # 第三次遍历:找到第一个正数所对应的索引,返回索引 + 1
        for i in range(n):
            if nums[i] >0:
                return i + 1
        
        # 如果都是正整数,则返回 n+1
        return n+1

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务