找到缺失的最小正整数:给定一个未排序的整数数组,找到缺失的最小正整数。
要找到缺失的最小正整数,可以利用哈希表的思想。以下是实现这个算法的Python代码:
def first_missing_positive(nums):
n = len(nums)
# 遍历数组,将大于0且小于等于n的数放到正确的位置上
for i in range(n):
while 1 <= nums[i] <= n and nums[nums[i] - 1] != nums[i]:
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
# 找到第一个位置不对应的数,即为缺失的最小正整数
for i in range(n):
if nums[i] != i + 1:
return i + 1
# 如果数组中都是连续的正整数,则缺失的最小正整数为n+1
return n + 1
# 示例数组
nums = [3, 4, -1, 1]
# 找到缺失的最小正整数
missing_positive = first_missing_positive(nums)
print("Missing positive integer:", missing_positive)
在上面的代码中,我们首先遍历数组,将大于0且小于等于数组长度n的数放到正确的位置上,即数值i应该放在索引为i-1的位置上。然后再次遍历数组,找到第一个位置不对应的数,即为缺失的最小正整数。如果数组中都是连续的正整数,则缺失的最小正整数为n+1。
这个算法的时间复杂度为O(n),其中n是数组的长度,因为需要遍历数组两次。