查找在Python中将列表简化为一个整数的最低成本的程序
假设我们有一个称为nums的数字列表。我们可以通过取任意两个数字,删除它们并将其总和附加到末尾来减少num的长度。进行此操作的成本是我们删除的两个整数的总和。我们必须找到将nums减少为一个整数的最小总成本。
因此,如果输入类似于nums=[2、3、4、5、6],那么输出将为45,因为我们取2和3然后删除以获得[4、5、6、5],那么我们取4和5,然后删除以获得[6,5,9],然后取6和5,然后删除它们,我们得到[9,11],最后删除9和11,我们得到19。所以总和是45。
为了解决这个问题,我们将遵循以下步骤-
通过使用以nums表示的元素进行堆
回答:=0
当nums的大小>=2时,执行
一个:=堆nums最上面的元素
b:=堆编号的最高元素
ans:=ans+a+b
在堆编号中插入a+b
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, nums):
import heapq
heapq.heapify(nums)
ans = 0
while len(nums) >= 2:
a = heapq.heappop(nums)
b = heapq.heappop(nums)
ans += a + b
heapq.heappush(nums, a + b)
return ans
ob = Solution()nums = [2, 3, 4, 5, 6]
print(ob.solve(nums))输入值
[2, 3, 4, 5, 6]
输出结果
45
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短