通过给定操作减少列表并在Python中找到最小剩余数的程序
假设我们有一个名为nums的正数列表。现在考虑一个操作,我们删除任意两个值a和b,其中a≤b并且如果a<b是有效的,则将ba重新插入到列表nums中。如果我们可以执行任意数量的操作,我们必须找到我们能得到的最小剩余数量。如果列表变为空,则只需返回0。
所以,如果输入像nums=[2,4,5],那么输出将是1,因为,我们可以选择4和5然后插入回1得到[2,1]。现在选择2和1得到[1]。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums): s = sum(nums) def f(i, s): if i >= len(nums): return s n = nums[i] if s - 2 * n < 0: return f(i + 1, s) return min(f(i + 1, s - 2 * n), f(i + 1, s)) return f(0, s) nums = [2, 4, 5] print(solve(nums))
输入
[2, 4, 5]输出结果
1