数据结构与算法(3)——贪心算法

这篇具有很好参考价值的文章主要介绍了数据结构与算法(3)——贪心算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 贪心算法的定义与特点

定义:所谓“贪心”,就是每次只考虑自己附近局部范围的最优解,但这种局部最优会导致全局最优。

2. 贪心算法的解题思路

考虑当前的附近一两步即可

3. LeetCode中的贪心算法题

455. 分发饼干

简评:简单的贪心算法,将“胃口”和“饼干”按升序排列后,每次都只考虑“胃口”最小的小孩,然后把最小的饼干给他,如果不够,那继续考虑更大的饼干,如果所有饼干都不能满足这个小孩,那后面“胃口”更大的小孩也自然满足不了。

135. 分发糖果

简评:此题需要两轮贪心操作,从左往右贪心,以及从右往左贪心。

435. 无重叠区间

简评:此题需要先排序(排序只需要右端点升序排列即可,没必要两端都进行排序),再贪心。这里可以贪心是因为右端点已经升序了,左端点如果能不相交,就能把区间吸纳进来,如果相交,那就说明这个区间不满足要求,看下个区间,这样逐步地拉伸区间范围。

630. 课程表 III

简评:贪心+最大堆。首先还是按照lastday从小到大排序,同时还维护一个最大堆,我按照lastday从小到大依次考虑每个课程,但每次还把他们(上过的课)的持续时间压到最大堆里,如果遇到某个课程安排不下,即持续时间+当前时间>lastday的时间,那么我就考虑最大堆里最大的持续时间是不是超过我当前的持续时间,如果是,就说明之前那个课不应该考虑(就是上过的课,但是我反悔了,不上了),应该上当前课(注意此时一定是安排地下的,因为当前课的lastday更长,且持续时间更短)文章来源地址https://www.toymoban.com/news/detail-471098.html

到了这里,关于数据结构与算法(3)——贪心算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包