Leetcode41缺失的第一个正数
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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Solution 1
对符合条件的正整数原地哈希
执行用时:44 ms
内存消耗:13.6 MB
class Solution:
def firstMissingPositive(self, nums: [int]) -> int:
# 对符合条件的正整数原地哈希
i = 0
while(i < len(nums)):
number = nums[i]
if number == 0 or number == i+1:
i += 1
elif 0 < number and number <= len(nums):
temp = nums[number-1]
nums[number-1] = nums[i]
nums[i] = temp
continue
else:
nums[i] = 0
result = 0
for number in nums:
result += 1
if number == 0:
break
return result