Menu
CoddyTech

Minimum Cost of Ropes

简单堆贪心python iconjava iconcpp iconc iconjs icon+10

你有一些绳子,ropes[i] 是第 i 根绳子的长度。你可以将任意两根绳子合并成一根新绳子,新绳子的长度等于两根绳子长度之和,合并的成本也等于这个和。你要不断合并,直到只剩下一根绳子。

编写一个名为 minCostRopes 的函数,返回将所有绳子合并成一根的最小总成本。如果一开始就只有一根绳子,则返回 0。

函数

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
每根绳子的长度
返回值integer
将所有绳子合并成一根的最小总成本

约束条件

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • 答案可以用 32 位有符号整数表示。

示例

输入
ropes = [5, 2, 8, 3]
输出
33
解释
将 2 和 3 合并,得到 5;再将两根长度为 5 的绳子合并,得到 10;然后将 8 和 10 合并,得到 18。总和为 5 + 10 + 18 = 33。
challenge icon

进阶

假设一次连接最多可以合并 3 根绳子,代价是它们的总长度。当绳子数量不能平均分组时,贪心规则该如何调整?

重置代码
def minCostRopes(ropes):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

ropes = [5, 2, 8, 3]

预期输出

33