贪心算法学习总结
贪心算法学习随笔这段时间刷算法题最先上手的就是贪心。比起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/7/17 20:02:52阅读更多 →
数字化知识产权管理落地案例:本地化部署的实践观察

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

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

2026/7/17 20:29:31阅读更多 →
机器学习新手避坑指南:从数据质量到模型可维护的七大理性认知

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

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

2026/7/17 21:52:37阅读更多 →
鸣潮终极自动化指南:5分钟实现游戏后台智能托管

鸣潮终极自动化指南:5分钟实现游戏后台智能托管

鸣潮终极自动化指南:5分钟实现游戏后台智能托管 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了每天重复刷…

2026/7/18 13:38:05阅读更多 →
三极管驱动MOSFET电路设计与优化指南

三极管驱动MOSFET电路设计与优化指南

1. 为什么需要三极管驱动MOSFET? 在电力电子和电机控制领域,MOSFET因其开关速度快、导通电阻低等优势被广泛应用。但直接使用微控制器GPIO驱动MOSFET存在几个关键问题: 首先,MOSFET的栅极相当于一个电容(Ciss&#xf…

2026/7/18 13:38:05阅读更多 →
Unity中世纪场景构建实战:从Stronghold Village资产到高效游戏开发

Unity中世纪场景构建实战:从Stronghold Village资产到高效游戏开发

1. 项目概述:为什么Stronghold Village是构建中世纪世界的“瑞士军刀” 如果你正在开发一款中世纪题材的游戏,无论是RPG、策略、模拟经营还是动作冒险,最头疼的环节之一,可能就是场景搭建。从零开始建模一座城堡、一个村庄&#x…

2026/7/18 13:38:05阅读更多 →
360AI搜索私有知识库接入全流程(含Nginx反向代理+SSL证书强制校验实操)

360AI搜索私有知识库接入全流程(含Nginx反向代理+SSL证书强制校验实操)

更多请点击: https://kaifayun.com 第一章:360AI搜索私有知识库接入概述 360AI搜索提供企业级私有知识库接入能力,支持将结构化与非结构化文档(如PDF、Word、Markdown、网页HTML等)安全导入至专属向量空间&#xff0c…

2026/7/18 13:38:05阅读更多 →
Java学习心得

Java学习心得

Java简介Java是一种强类型语言,每个变量都必须先定义才能使用,但是web前端开发中的html就是一种弱类型语言。例如:String a;System.out.println(a);其中,a没有初始化,会报错,应该改为:String a“…

2026/7/18 13:38:05阅读更多 →
UVa 694 The Collatz Sequence

UVa 694 The Collatz Sequence

题目描述 给定一个正整数 AAA 和限制值 LLL,根据 Collatz\texttt{Collatz}Collatz 序列生成规则: 若 A1A 1A1,停止;若 AAA 为偶数,则 AA/2A A / 2AA/2;若 AAA 为奇数,则 A3A1A 3A 1A3A1。 要…

2026/7/18 13:33:04阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/17 17:26:50阅读更多 →