leetcode:连接棒材的最低费用

这篇博客讨论了如何解决LeetCode上的一个问题——如何以最低费用将棒材连接成一根。作者强调了编程中逻辑清晰和正确处理特殊情况的重要性,并提供了解题思路:从最小的棒材开始连接,使用队列来优化这一过程,优先考虑较小的棒材进行组合,以减少总成本。
摘要由CSDN通过智能技术生成

题目描述:

为了装修新房,你需要加工一些长度为正整数的棒材 sticks。

如果要将长度分别为 X 和 Y 的两根棒材连接在一起,你需要支付 X + Y 的费用。 由于施工需要,你必须将所有棒材连接成一根。

返回你把所有棒材 sticks 连成一根所需要的最低费用。注意你可以任意选择棒材连接的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-cost-to-connect-sticks
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

反思:

注意点一:一定要确保所有逻辑和处理时正确的,有一个地方没注意到,导致浪费很多点去定位,一定一定要注意主要逻辑一定要清晰,逻辑处理一定要正确。

注意点二:这里有个用例没考虑到就是只有一个元素,其余特殊用例倒是没有了。

解题思路:肯定是最小的开始连最后总和越少,因为每次拼接其实就是一个重复加的过程,把小的重复加总比大的划算。

另外就是怎么把最小的加起来:第一个想法就是排序,使用qsort函数,但是把最小的加完后,数组的个数会发生变化,那怎么办呢。因此就使用一个队列,为何使用队列,因为最先加起来的数肯定最小。因此先入队列的就最先加,把队列头和数组要加的数比较,谁小加谁。把加好的数入队列。

int Incom(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}


int connectSticks(int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值