亚马逊面试题:连接棒材的最低费用
描述
为了装修新房,你需要加工一些长度为正整数的棒材 sticks。
如果要将长度分别为 X 和 Y 的两根棒材连接在一起,你需要支付 X + Y 的费用。 由于施工需要,你必须将所有棒材连接成一根。
返回你把所有棒材 sticks 连成一根所需要的最低费用。
注意你可以任意选择棒材连接的顺序
- 1≤sticks.length≤104
- 1≤sticks[i]≤104
样例1
输入:
[2,4,3]
输出:
14
解释:
先将 2 和 3 连接成 5,花费 5;再将 5 和 4 连接成 9;总花费为 14
样例 2:
输入:
[1,8,3,5]
输出:
30
解题思路
根据题意,考虑贪心,我们每次将所有棒材的最短的两根合并,将合并后的棒材放入棒材堆,重复合并最短的,直到棒材只剩下一根
源代码
// minheap 暴力
// 直接将所有值压入minheap,每次取前两个值相加成merge,同时将merge压入minheap
public class Solution {
/**
* @param sticks: the length of sticks
* @return: Minimum Cost to Connect Sticks
*/
public int MinimumCost(List<Integer> sticks) {

本文详细讲解了亚马逊面试中的一道算法题,涉及如何使用贪心策略将长度不等的棒材以最低费用连接成一根。通过分析问题并提供解题思路,给出源代码实现,帮助读者理解贪心算法的应用。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



