📅  最后修改于: 2023-12-03 15:11:53.666000             🧑  作者: Mango
给定一个整数数组和一个目标整数K,计算最小减少量,这样将数组元素相加得到的和不小于K。
例如,如果输入为数组[10,20,30]和K为50,则需要去掉最小的元素以确保总和不小于50,因此减少量为10,因此应返回1。
通过排序数组并迭代每个元素,我们可以计算每个元素被删除时所需的减少量并返回需要减少的数量。
def min_reduction_to_k(nums, k):
nums.sort()
reduction = 0
total_sum = sum(nums)
for i in range(len(nums)):
reduction += nums[i]
total_sum -= nums[i]
if total_sum + reduction >= k:
return i+1
print(min_reduction_to_k([10, 20, 30], 50)) # 1
print(min_reduction_to_k([1, 2, 3, 4, 5], 10)) # 1
print(min_reduction_to_k([1, 2, 3, 4, 5], 15)) # 2