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 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告