news 2026/6/23 12:15:44

贪心(一步步进阶)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心(一步步进阶)

贪心算法

定义

贪心算法是在对问题求解时 总是做出在当前看来时最好的选择(局部最优来达到全局最优)
贪心算法并不是对所有问题都可以得到整体的最优解 关键是贪心策略的选择 选择的贪心邪恶略必须具有无后效性就是说某个状态以前的过程不会影响以后的状态 只于当前状态有关

解题第一般步骤

  1. 建立数学模型来描述问题
  2. 把求解的问题分成若干子问题
  3. 对每一子问题求解 得到子问题的局部最优解
  4. 把子问题的最优解合并为原来问题的一个解

贪心题目

LeetCode 435 无重复区间

LeetCode435

classSolution{public:interaseOverlapIntervals(vector<vector<int>>&intervals){//按照结尾时间的大小排序//如果a[0]==b[0]也不用考虑顺序问题//因为我们只用判断能不能一次更新一下end就行了//不必在意两个区间的开始时间相同时的情况了sort(intervals.begin(),intervals.end(),[](autoa,autob){returna[1]<b[1];});//到这里已经排好序了 按照结束时间排序intnum=1;//一次能有几个区间intend=intervals[0][1];//当前的结尾时刻for(intj=1;j<intervals.size();++j){if(end<=intervals[j][0]){//如果可以更新结尾时刻end=intervals[j][1];//更新结尾num++;//数量++}}//总区间个数-一次的区间个数=需要删除的区间个数returnintervals.size()-num;//返回要删除的区间个数}};

LeetCode 452 用最少数量的箭引爆气球

LeetCode 452

classSolution{public:intfindMinArrowShots(vector<vector<int>>&points){//先让数组按照气球结束区间排序sort(points.begin(),points.end(),[](autoa,autob){returna[1]<b[1];});intnum=1;//当前的结果 就时弓箭的个数intcurr=points[0][1];//目前的结尾for(inti=1;i<points.size();++i){if(curr<points[i][0]){//如果以当前结尾的弓箭不能射到这个i位置的气球num++;curr=points[i][1];}//如果以当前结尾的弓箭能射到这个i位置的气球 就直接j++ 就行了 就是下一次循环}returnnum;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 2:37:18

error: c9511e 错误解析:快速理解ARM工具链缺失场景

深入理解error: c9511e&#xff1a;ARM 工具链“失联”时的精准排错指南在嵌入式开发的世界里&#xff0c;编译器报错并不可怕&#xff0c;真正令人头疼的是那些看似模糊、实则暗藏玄机的错误码。比如当你在构建一个基于 ARM 架构的项目时&#xff0c;突然弹出这样一条提示&…

作者头像 李华
网站建设 2026/6/22 22:00:56

从零实现UDS 28服务安全访问请求响应

如何安全地“静音”一辆车&#xff1f;——深入实现UDS 28服务与安全访问的协同控制你有没有想过&#xff0c;如何让一个ECU在关键时刻“闭嘴”&#xff1f;不是断电&#xff0c;也不是拔线&#xff0c;而是通过一条诊断命令&#xff0c;精准关闭它的通信输出——这正是UDS 28服…

作者头像 李华
网站建设 2026/6/19 11:58:32

Touch屏厚度对灵敏度影响:科学分析材料与性能关系

Touch屏厚度与触控灵敏度&#xff1a;从物理原理到工程优化的全链路解析你有没有遇到过这样的情况&#xff1f;明明手指已经稳稳地按在屏幕上&#xff0c;设备却迟迟没有反应&#xff1b;或者戴着薄手套操作工业面板时&#xff0c;触控完全失灵。很多工程师第一反应是“软件卡了…

作者头像 李华
网站建设 2026/6/17 17:36:16

Java代码

int low 1, high L.length, mid; // 定义查找区间的上下界和中间位置while (low < high){mid (low high) / 2; // 计算中间位置if (L.r[mid].key key){return mid; // 找到目标&#xff0c;返回位置}else if (L.r[mid].key < key){low mid 1; // 目标在右半区间&a…

作者头像 李华
网站建设 2026/6/23 0:24:50

零基础学Arduino UNO下载:从电脑到开发板的连接详解

从零开始搞定 Arduino UNO 下载&#xff1a;手把手教你把代码“烧”进开发板 你是不是也经历过这样的场景&#xff1f; 刚买回一块 Arduino UNO&#xff0c;兴冲冲地插上 USB 线&#xff0c;打开 IDE 写好第一个“LED 闪烁”程序&#xff0c;点击“上传”——结果弹出一串红色…

作者头像 李华