首页/新闻资讯/正文详情

贪心算法学习总结

发布时间:2026/9/27 4:13:38 来源:云帆数科 栏目:资讯中心
贪心算法学习总结
贪心算法学习随笔这段时间刷算法题最先上手的就是贪心。比起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/9/26 14:50:24

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

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

基于NXP Layerscape平台构建PKCS#11安全加密栈与Linux内核驱动优化实战
基于NXP Layerscape平台构建PKCS#11安全加密栈与Linux内核驱动优化实战

1. 项目概述与核心价值在嵌入式系统开发,尤其是网络设备、工业网关和物联网边缘计算节点这类对安全性和性能有双重高要求的领域,我们常常面临一个核心矛盾:如何在不牺牲系统吞吐量的前提下,确保密钥管理、数据加解密等核心安全操作… · 2026/9/25 18:14:18

MAX795TESA+T复位芯片原理与工业级可靠设计指南
MAX795TESA+T复位芯片原理与工业级可靠设计指南

1. 这颗小芯片到底在干什么?——从电路板角落讲清楚MAX795TESAT的真实角色你拆过一块老式工控主板、嵌入式设备或者工业采集模块吗?翻到背面,总能在CPU附近找到几颗不起眼的8脚小封装芯片,标着MAX795、MAX809、TPS3823这类编号。它… · 2026/9/27 11:55:02

昆山品牌网站建设哪家好?不懂代码也能3天上线
昆山品牌网站建设哪家好?不懂代码也能3天上线

昆山品牌网站建设哪家好?不懂代码也能3天上线 很多昆山老板问我,自己不会写代码,想做个品牌官网,到底找哪家好?别急,今天我就把这行里的门道掰开了揉碎了讲给你听。… · 2026/9/27 11:55:02

风光储与电解制氢系统仿真模型(光伏耦合PEM制氢)附Simulink仿真
风光储与电解制氢系统仿真模型(光伏耦合PEM制氢)附Simulink仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c… · 2026/9/27 11:55:02

写论文前的心理建设 —— 别把毕业论文想象得那么可怕
写论文前的心理建设 —— 别把毕业论文想象得那么可怕

很多学生对毕业论文有莫名的恐惧。觉得它是大学四年最大的坎,写不好就毕不了业。这种恐惧放大了任务的难度,让人迟迟不敢开始。实际上,毕业论文没有你想象的那么可怕。汇写(https://www.huixielunwen.com/tool/graduationThesis&a… · 2026/9/27 11:54:56

面试前,把简历上的每个技术名词做一遍「能讲三层吗」自检
面试前,把简历上的每个技术名词做一遍「能讲三层吗」自检

技术面试里最尴尬的时刻,是面试官指着你简历上的一个词问「这个能展开说说吗」,而你只能复述一遍定义。 这个问题可以在面试前一小时解决。方法是自检:把简历上出现的每个技术名词过一遍,看你能讲到第几层。 三层是什么 第一层&am… · 2026/9/27 11:54:56

Codex 报错找不到 bubblewrap?用 TaoToken 统一 Key 排查 PATH 与包管理器配置
Codex 报错找不到 bubblewrap?用 TaoToken 统一 Key 排查 PATH 与包管理器配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 11:54:56

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码