首页 > 其他分享 >41 缺失的第一个正整数

41 缺失的第一个正整数

时间:2022-09-30 09:47:56浏览次数:48  
标签:正整数 nums 41 range num 数组 缺失

 

 说实话感觉题目看了好几遍才懂这个意思,然后看了题解,觉得解法真的很厉害。

假设数组长度为N,那么没有出现的整数一定是在[1,N+1]中。如果[1,N]都出现了,那没有出现的正整数就是N+1。

1、将数组中所有小于等于0以及大于数组长度N的数都改为N+1;

2、遍历数组中的数,可能有的数被打了标记。如果|x|在(1,N)中,那么就把数组中|x|-1位置的数变成负数。

3、如果数组中每一个数都是负数,那么答案就是N+1,否则答案就是第一个正数的下标加1.

 

 

 1 def firstMissingPositive(nums):
 2     n =len(nums)
 3     for i in range (n):
 4         if nums[i] <= 0 or nums[i] > n+1:
 5             nums[i] = n+1 
 6     for i in range(n):
 7         num = abs(nums[i])
 8         if num <= n:
 9             nums[num-1] = -abs(nums[num-1])
10     for i in range(n):
11         if nums[i]>0:
12             return i+1
13     return n+1

 

标签:正整数,nums,41,range,num,数组,缺失
From: https://www.cnblogs.com/wanxueyu/p/16743823.html

相关文章