贪心算法学习总结
贪心算法学习随笔这段时间刷算法题最先上手的就是贪心。比起DP、回溯要考虑各种状态、记录大量中间数据贪心写起来明显轻松很多。一开始我以为贪心万能随便一道题都套“每次选最好的”思路踩了好几次坑才明白它有很明确的使用限制不能凭直觉乱写。下面结合我做题时的真实思路和代码记录一下。一、贪心到底是什么它的核心逻辑很简单处理问题时每一步只选当下看起来最优的方案选定之后不会回头修改一路做到结束。生活里找零钱、安排时间都自带这种思维。但这里有个关键前提一步步的局部最优最后合在一起必须是整体最优不满足这个前提答案一定会错。二、入门例题活动安排题目要求同一时间只能参加一个活动给出所有活动的起止时间算出最多能参加几场。我一开始试了两种思路先按开始时间排序结果安排到后面很容易被长活动占住时间换成按结束时间从小到大排序后每次挑结束最早的剩下的空闲时间最多能塞下更多活动这才是正确局部策略。importjava.util.*;classActivity{intstart,end;Activity(ints,inte){starts;ende;}}publicclassTest{publicstaticvoidmain(String[]args){ListActivityactsnewArrayList();acts.add(newActivity(1,3));acts.add(newActivity(2,4));acts.add(newActivity(3,5));acts.add(newActivity(6,7));// 按结束时间升序acts.sort((a1,a2)-a1.end-a2.end);intcount0;intlastEnd-1;for(Activitya:acts){if(a.startlastEnd){count;lastEnda.end;}}System.out.println(count);}}这段代码跑出来结果是3是这组数据下能参加的最大数量。三、零钱兑换看清贪心的局限标准人民币面额50、20、10、5、1凑金额优先选大额完全没问题。publicclassCoin{publicstaticvoidmain(String[]args){int[]coins{50,20,10,5,1};inttarget63;intcnt0;intresttarget;for(intc:coins){if(restc){cntrest/c;restrest%c;}}System.out.println(cnt);}}但如果换一组特殊面额比如只有1、3、4凑6块钱。按照贪心思路先拿4剩下两个1一共3张但最优解是两张3只用两张。这里贪心就失效了。做完这道题我才记牢不是所有求最值的题都能用贪心得先手动模拟小数据验证策略是否成立。四、能用贪心的两个条件贪心选择性每一步最优的选择最终能导向全局最优最优子结构整个问题的最优解包含子问题的最优解。两个条件缺一个贪心都不适用要换成动态规划。五、平时刷题常遇到的贪心题型区间类活动安排、区间覆盖统一思路是排序后依次筛选分配类分饼干、分糖果两边排序后一一匹配数字构造拼接数字求最大或最小值自定义排序规则行程类跳跃游戏、加油站每一步选最远可到达位置。六、贪心的优缺点优点很明显只需要一次排序加单层循环运行速度快代码量少不用开数组存大量中间状态调试起来简单。缺点也很突出适用场景窄很多复杂问题满足不了贪心条件而且正确性很难一眼看出来必须手动举例验证不能直接写代码。学习小结贪心算是入门最简单的算法但也是最容易误用的。我之前做题总懒得验证策略直接上手写代码经常出现样例过了、测试数据出错的情况。现在我自己固定一套做题流程先想一种局部最优策略手动用简单数字试一遍确认能得到全局最优再动手写代码如果模拟后结果不对直接放弃贪心改用动态规划或者暴力枚举。对比其他算法能明显感觉到贪心不需要记录过往所有状态走一步定一步逻辑直白但能不能用全看题目本身的特性。

相关新闻

Parquet过滤优化:从Row Group跳过到Bloom Filter实战

Parquet过滤优化:从Row Group跳过到Bloom Filter实战

1. 项目概述:为什么“过滤”是Parquet文件的灵魂操作Parquet不是一张静态的表格快照,而是一套精密设计的、为高效筛选而生的数据存储体系。当你看到“Parquet Best Practices: The Art of Filtering”这个标题,别被“Art”这个词迷惑——它不…

2026/6/18 10:48:04阅读更多 →
数字化知识产权管理落地案例:本地化部署的实践观察

数字化知识产权管理落地案例:本地化部署的实践观察

在企业上市筹备的关键阶段,知识产权资产的规范化管理往往成为监管审查的重点领域。专利、商标等无形资产的数量、法律状态、维护记录、费用流向,都需要清晰可溯、有据可查。然而,许多集团型企业在日常运营中,知识产权管理长期依赖…

2026/6/18 10:48:04阅读更多 →
机器学习新手避坑指南:从数据质量到模型可维护的七大理性认知

机器学习新手避坑指南:从数据质量到模型可维护的七大理性认知

1. 别急着追热点:为什么新手学机器学习,第一课不是调大模型“别学LLM!”——这句话我去年在三个不同城市的线下技术分享会上都说过,台下总有年轻人皱眉,有人直接举手问:“老师,现在面试官不都问…

2026/6/18 10:37:39阅读更多 →
学完 Spring Boot 再看 FastAPI,我破防了

学完 Spring Boot 再看 FastAPI,我破防了

学完 Spring Boot 再看 FastAPI,我破防了撸了两年 Spring Boot,自认为后端功力还行。上周心血来潮打开 FastAPI 官方文档,15 分钟后我沉默了。不是它太难,而是太简单了。简单到让我怀疑自己这些年到底在干什么。这不是一篇踩一捧一…

2026/6/18 12:03:21阅读更多 →
Anthropic Claude Code 研究解读:Agent 编程时代,专业判断为什么更值钱了

Anthropic Claude Code 研究解读:Agent 编程时代,专业判断为什么更值钱了

摘要:Anthropic 在 2026 年 6 月 16 日发布了对约 40 万个 Claude Code 交互会话的隐私保护分析,试图回答一个很现实的问题:当编码 Agent 能读文件、改代码、跑命令、提交结果时,人类的专业能力还重要吗?结论很有意思&…

2026/6/18 12:03:21阅读更多 →
Voohu:车载以太网1000BASE-T1共模扼流圈的宽带阻抗匹配与信号完整性设计

Voohu:车载以太网1000BASE-T1共模扼流圈的宽带阻抗匹配与信号完整性设计

车载以太网1000BASE-T1采用单对非屏蔽双绞线(UTP)实现1Gbps全双工传输,工作频率高达600MHz。共模扼流圈(CMC)是抑制共模噪声、保证信号完整性的关键元件,需在宽频带内提供足够的共模阻抗,同时最…

2026/6/18 12:03:21阅读更多 →
“电商的‘王牌’TMS,为何到了医药行业就成了‘废铁’?”

“电商的‘王牌’TMS,为何到了医药行业就成了‘废铁’?”

在运输管理系统(TMS)的选型讨论中,一个经常被忽略的问题——TMS的行业适配性到底重不重要? 答案是:极其重要,而且不同行业之间的功能差异远比想象中更大。 很多企业选型时,倾向于寻找“功能最…

2026/6/18 12:03:21阅读更多 →
人形机器人芯片设计

人形机器人芯片设计

序言 人形机器人芯片设计,正处于一个“从能用迈向好用、从通用走向专用”的关键转折点。一台人形机器人全身有数十到数百个关节,每个关节都需要独立的电机驱动和编码器。如果说算法是机器人的“灵魂”,那么芯片就是承载灵魂的“骨骼”与“神…

2026/6/18 12:03:21阅读更多 →
揭秘Windows热键冲突:Hotkey Detective如何精准定位“快捷键小偷“

揭秘Windows热键冲突:Hotkey Detective如何精准定位“快捷键小偷“

揭秘Windows热键冲突:Hotkey Detective如何精准定位"快捷键小偷" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-det…

2026/6/18 11:58:20阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA:智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域,尤其是基于ZigBee协议,那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范,更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域,尤其是基于NXP JN517x这类无线微控制器的项目中,系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行,后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →