📌  相关文章
📜  找到一个数字 K 使得 Array 至少包含 K 个大于或等于 K 的数字(1)

📅  最后修改于: 2023-12-03 15:39:45.351000             🧑  作者: Mango

找到一个数字 K 使得 Array 至少包含 K 个大于或等于 K 的数字

在解决这道题之前,我们需要对题目进行分析。

题目要求我们找到一个数字 K,使得给定的 Array 至少包含 K 个大于或等于 K 的数字。这意味着,如果我们找到的 K 越大,那么在 Array 中大于或等于 K 的数字也就越多。

因此,我们可以采用二分查找的方法来解决这道题。具体而言,我们可以从 Array 中的最小值开始,一步步向上逐渐增加 K 的值,直到 Array 中大于或等于 K 的数字个数达到 K。

下面是编写该算法的代码片段。

def find_K_number(nums):
    left = 0
    right = len(nums)
    while left < right:
        mid = (left + right) // 2
        cnt = 0
        for i in range(len(nums)):
            if nums[i] >= mid:
                cnt += 1
        if cnt < mid:
            right = mid
        else:
            left = mid + 1
    return left - 1

该算法的时间复杂度为 O(NlogN),其中 N 为 Array 的长度。

最后,我们可以使用该算法来解决题目。