📜  Python - K 之后最小的缺失元素(1)

📅  最后修改于: 2023-12-03 14:45:53.339000             🧑  作者: Mango

Python - K 之后最小的缺失元素

介绍

本文将介绍如何解决在给定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)时间复杂度内解决该问题。