在Python中删除列表的给定操作并找到最小的剩余数字的程序

在Python中删除列表的给定操作并找到最小的剩余数字的程序

假设我们有一个名为nums的正数列表。现在考虑一种操作,其中我们删除任何两个值a和b,其中a≤b,如果a< b有效,则将b-a重新插入到列表nums中。如果我们可以执行任意数量的操作,我们必须找到我们可以得到的最小剩余数字。如果列表变为空,则简单地返回0。

因此,如果输入为nums =[2,4,5],则输出将为1,因为我们可以选择4和5,然后将1重新插入以获取[2,1]。现在选择2和1以获取[1]。

要解决这个问题,我们将遵循以下步骤−

  • s:nums中所有元素的总和
  • 定义一个函数f()。这将使用i,s
  • 如果i≥nums的大小,则
    • 返回s
  • n:nums[i]
  • 如果s-2 * n<0,则
    • 返回f(i + 1,s)
  • 返回f(i + 1,s-2 * n)和f(i + 1,s)的最小值
  • 从主要方法返回f(0,s)

示例

让我们看一下以下实现,以便更好地理解−

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程