📅  最后修改于: 2023-12-03 14:45:53.339000             🧑  作者: Mango
本文将介绍如何解决在给定K和一个升序排列的列表中,找到第一个缺失元素的问题。本问题也被称为“寻找第K个缺失的正整数”。
给定一个排序好的正整数列表和一个正整数K,找出该列表中第K个丢失的正整数。
例子:
输入: nums = [4, 7, 9, 10], k = 3 输出: 8
说明: 1、1 和 2 已经被 nums 中的其他数字占据了。 2、最小的缺失正整数是 3。 3、第二小的缺失正整数是 5。 4、第三小的缺失正整数是 6。 5、所以输出 8。
思路是将列表中缺失的数字一一加入到哈希集合中,并遍历至第K个缺失的数字。时间复杂度为O(n)。
def findKthPositive(nums, k):
missing_numbers = set(range(1, len(nums)+1))
for num in nums:
if num in missing_numbers:
missing_numbers.remove(num)
for num in range(1, len(nums) + k):
if num in missing_numbers:
k -= 1
if k == 0:
return num
在给定K和一个升序排列的列表中,找到第一个缺失元素是一个常见的算法问题。我们可以使用哈希集合在O(n)时间复杂度内解决该问题。