Python程序:查找列表中至少有k个元素值大于等于k的k值


假设我们有一个名为nums的数字列表,其中只包含非负数。如果nums中恰好有k个元素大于或等于k,则找到k的值。如果找不到这样的k,则返回-1。

因此,如果输入类似于nums = [6, 4, 0, 8, 2, 9],则输出将为4,因为恰好有4个元素大于或等于4:[6, 4, 8, 9]。

为了解决这个问题,我们将遵循以下步骤:

  • 将列表nums按降序排序

  • 对于i从1到nums的大小-1,执行以下操作:

    • 如果i > nums[i - 1],则

      • 退出循环

    • 否则,当i > nums[i]时,则

      • 返回i

  • 返回-1

示例

让我们看看下面的实现以获得更好的理解

def solve(nums):
   nums.sort(reverse=True)
   for i in range(1, len(nums)):
      if i >nums[i - 1]:
         break
      elif i > nums[i]:
         return i
   return -1

nums = [6, 4, 0, 8, 2, 9]
print(solve(nums))

输入

[6, 4, 0, 8, 2, 9]

输出

4

更新于: 2021年10月11日

223 次查看

开启你的职业生涯

通过完成课程获得认证

立即开始
广告