算法:贪心算法

发布时间:2026/10/31 7:49:02

算法:贪心算法 引言376. 摆动序列 - 力扣LeetCode55. 跳跃游戏 - 力扣LeetCode45. 跳跃游戏 II - 力扣LeetCode134. 加油站 - 力扣LeetCode135. 分发糖果 - 力扣LeetCode代码第一题这是一道简单的贪心题目目的是找最长的摆动序列我们的想法就是记录上一个差值和本次差值只要差值相反那么我们就对结果1class Solution { public: int wiggleMaxLength(vectorint nums) { if (nums.size() 1) { return nums.size(); } int preDiff 0; int curDiff 0; int res 1; for (int i 0; i nums.size() - 1; i) { curDiff nums[i 1] - nums[i]; if ((curDiff 0 preDiff 0) || (curDiff 0 preDiff 0)) { res; preDiff curDiff; } } return res; } };第二题这一题思路不是很难但是实现起来却比较困难就是要实现一个最大的覆盖面积在已经遍历过了的点里面而且还要做到循环的处理这里就是改变了停止的条件cover每一次都是要保证是最大的而只要遍历的点超过了这个最大的覆盖区说明根本到达不了这个地方。class Solution { public: bool canJump(vectorint nums) { int cover 0; if (nums.size() 1) { return true; } for (int i 0; i cover; i) { cover max(cover, i nums[i]); if (cover nums.size() - 1) { return true; } } return false; } };第三题这一题相比于上一题有一个不同的地方就是判断走到终点要几步那么我们可以延续上一题的思路我们每当走到一个范围的终点的时候就会更新我们的范围不过在更新之前我们会判断这个范围与终点之间的关系。不过这一题和上一题有一个不同的地方就是这一题的范围不是在一边循环一边变化的是走完一个范围之后才会更新的这个也是因为我们题目里面已经保证了可以到达终点。class Solution { public: int jump(vectorint nums) { if (nums.size() 1) { return 0; } int ans 0; int nextDistance 0; int curDistance 0; for (int i 0; i nums.size(); i) { nextDistance max(nums[i] i, nextDistance); if (i curDistance) { ans; curDistance nextDistance; if (nextDistance nums.size() - 1) { break; } } } return ans; } };第四题我们创建一个数组来记录一下两个数组的差这样子就可以转化问题为从哪一个地方开始相加可以让和一直是正数。首先我们一定要先判断一下整个和相加一定要是正数否则无论从哪里开始都不可能保证是正数。然后我们按照顺序开始相加但是只要遇到了负数我们就从下一个开始重新计数。首先我们一开始都会对这个方法有疑问因为如果满足之后的和是正数但是一定可以保证再次加上之前的数也能是正数嘛~~~ 但是注意我们之前已经单独判断所有和加上去一定是正数了所以我们现在的所有操作是找到起点因为是这个起点是一定存在的既然之前的点已经测试过了不可以那么就往后面继续测呗~~~class Solution { public: int canCompleteCircuit(vectorint gas, vectorint cost) { vectorint nums(gas.size(), 0); for (int i 0; i gas.size(); i) { nums[i] gas[i] - cost[i]; } int index gas.size(); int sum 0; for (int i 0; i index; i) { sum nums[i]; } if (sum 0) { return -1; } sum 0; int startPos 0; bool flag true; for (int i 0; i index; i) { sum nums[i]; if (sum 0) { sum 0; startPos i 1; continue; } } return startPos; } };第五题这一题很难因为我们需要顾及左边又要顾及右边这种题目我们千万不要一下子兼顾两边我们要遍历两边先左边再右边。我们先把所有的数组都设置为1然后从左到右遍历只要右边比左边大那么右边的值就比左边的值大1。然后我们再从右边到左边遍历也就是如果右边大于左边那么就比左边的糖果大1但是因为也要满足上一次遍历的结果也就是右边比左边大的这个所以我们要利用上一次已经得到的结果1。不过一定要注意的是这两个数组是两个结果所以很可能对于一个点有两个结果我们为了要满足两次遍历的结果所以要取最大值。比如有可能1 2 3 4 5 1那么对于5这个数我们最后的结果应该是5个糖果。class Solution { public: int candy(vectorint ratings) { int sum 0; vectorint res(ratings.size(), 1); int index ratings.size(); for (int i 1; i index; i) { if (ratings[i] ratings[i - 1]) { res[i] res[i - 1] 1; } } for (int i index - 1; i 0; i--) { if (ratings[i - 1] ratings[i]) { res[i - 1] max(res[i - 1], res[i] 1); } } for (int result : res) { sum result; } return sum; } };
延伸阅读

更多相关文章

2026/10/31 7:46:12

AM62L CBASS模块寄存器实战:从安全配置到总线错误调试

1. 从手册到实战:理解AM62L CBASS模块的寄存器世界如果你正在基于德州仪器(TI)的AM62L Sitara™处理器进行嵌入式开发,尤其是涉及到系统安全、总线访问控制或者深度调试,那么你迟早会和它的CBASS模块打交道。CBASS&…

2026/10/31 7:48:18

TI AM62L WKUP_PLL0时钟系统配置详解与实战

1. AM62L WKUP_PLL0时钟系统概述在嵌入式系统开发中,时钟系统是决定整个芯片性能和稳定性的基石。对于像TI AM62L Sitara™这样的高性能异构处理器,其内部集成了多个锁相环(PLL)来为不同的子系统提供时钟源。其中,WKUP…

2026/10/30 2:44:32

Docker容器网络实验手册 · 实验二

文章目录 实验手册 实验二 实验二:Host(主机)模式与端口冲突 1. 实验目标 2. 核心知识点图解 3. 实验环境准备 4. 实验步骤 Step 1:启动 Host 模式的 Nginx 容器 Step 2:验证网络栈共享 Step 3:模拟端口冲突(核心实验) Step 4:宿主机端口占用排查 5. 实验原理深度解析…

2026/10/31 7:48:40

深度学习注意力热图可视化原理与实现

1. 注意力热图可视化项目概述在深度学习模型的可解释性研究中,注意力热图(Attention Heatmap)是最直观有效的可视化工具之一。这个项目主要解决一个核心问题:如何让黑盒般的神经网络决策过程变得透明可视?通过将模型关…

2026/10/31 7:48:40

AI笔试题里的自动推理:归结原理、产生式系统与语义网络

简介:这份百度人工智能经典考试试题文档面向准备课程期末、考研复试或AI岗位面试的学习者,围绕人工智能基础概念与经典题型组织内容。文档为单一doc文件,压缩包约279KB,包含选择题、填空题、简答题与应用题四类,覆盖语…

2026/10/31 7:48:40

Excel多表自动汇总实战:Power Query清洗、映射与刷新

1. 先把问题拆开:为什么手工汇总表最后都会烂掉每到月底,办公室里最容易被围住的那个人,往往是负责数据汇总的那位。手上摊着七八个部门发来的文件,文件名五花八门,表头有的在第一行、有的在第三行,某个部门…

2026/10/31 7:48:40

iOS代码混淆策略与审核通过技巧

1. iOS代码混淆的本质与审核边界在iOS开发领域,代码混淆一直是个敏感话题。很多开发者误以为苹果会直接拒绝所有经过混淆处理的App,但实际情况要复杂得多。混淆技术本身并不是审核的红线,关键在于如何把握技术实施的边界。混淆的核心目的是增…

2026/10/31 7:48:40

生产管理系统源代码拆解:从架构到报工库存的二次开发避坑指南

简介:这套生产管理系统源代码面向制造型企业的信息化建设者、具备一定编程与数据库基础的开发者,以及希望进行二次开发的技术团队,提供覆盖生产计划、物料需求计划、库存管理、生产进度跟踪、质量控制、订单管理、报表分析、系统集成与权限管…

2026/10/31 7:43:40

果蔬连连看H5游戏全解析:玩法机制、通关技巧与关卡设计逻辑

果蔬连连看这类H5小游戏,看起来只是"点两下消一对"的休闲玩意儿,但真要做推荐、写攻略、甚至自己动手改一版,里面的门道比想象中多得多。我接触过不少农场经营题材的轻量级网页游戏,也帮朋友做过几款连连看玩法的关卡配…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑