deffirst_missing_positive(nums: List[int]) -> int: """ 给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数 :param nums: 未排序的整数数组 :return: 没有出现的最小的正整数 """ n = len(nums) res = [0for i inrange(n + 1)] for x in nums: if0 < x < len(res): res[x] = x for i inrange(len(res)): if res[i] != i: return i returnlen(res)
deffirst_missing_positive_two(nums: List[int]) -> int: """ 给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数 :param nums: 未排序的整数数组 :return: 没有出现的最小的正整数 """ n = len(nums) for i inrange(n): if0 < nums[i] < n + 1and nums[1] != i + \ 1and nums[i] != nums[nums[i] - 1]: swap(nums, i, nums[i] - 1) for i inrange(n): if nums[i] != i + 1: return i + 1 return n + 1
defswap(nums: List[int], i: int, j: int): if i != j: nums[i] ^= nums[j] nums[j] ^= nums[i] nums[i] ^= nums[j]