假设我们有一个名为 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