给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
###
解题思路:简易Hash表 找到nums[i] - 1 下标的数组 进行判断是否一致 交换,从而达到排序目的
用自己封装的函数 能巧妙解决 num[num[i] - 1], num[i] = num[i], num[num[i] - 1]的错误,
###
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
if not nums:
return 1
def _swap(self, index1, index2):
self[index1], self[index2] = self[index2], self[index1]
size = len(nums)
for i in range(size):
while 0 < nums[i] <= size and nums[i] != nums[nums[i] - 1]:
_swap(nums, nums[i], nums[nums[i] - 1])
for i in range(size):
if nums[i] != i + 1:
return i + 1
else:
return size + 1
吐槽一下LeetCode 的运行计算时间,明明和官方一样的解 却显示我时间超时