📅  最后修改于: 2023-12-03 15:42:22.129000             🧑  作者: Mango
有一个包含 n 个元素的序列 nums,每个元素都是一个非负整数。现在你需要进行 m 次操作,每次操作可以选择一个下标 i 并将 nums[i] 的值加一。请你计算出进行这 m 次操作后,整个序列中有多少个元素的值不小于 k。
请你编写一个函数 solve(nums: List[int], m: int, k: int) -> int,来解决这个问题。
输入:
nums = [2, 3, 4, 5, 7]
m = 10
k = 5
输出:
7
解释:
进行 10 次操作后,序列变成了 [12, 13, 14, 15, 17],其中有 7 个元素的值不小于 5。
from typing import List
def solve(nums: List[int], m: int, k: int) -> int:
nums.sort()
n = len(nums)
j = 0
for i in range(n):
add_num = k - nums[i]
if m > add_num:
m -= add_num
nums[i] += add_num
else:
break
while j < n and nums[j] < k:
j += 1
return n - j
该函数接收三个参数: nums
表示序列,m
表示操作次数,k
表示阀值。该函数返回值为整个序列中有多少个元素的值不小于 k。