当前位置: 首页 > news >正文

算法第27天|贪心算法:合并区间 、单调递增的数字

合并区间 

题目链接:56. 合并区间 - 力扣(LeetCode)

代码随想录

整体思路:
        同意区间,合并区间,记录

整体代码:

class Solution {
public://sort函数的cmpstatic bool cmp(const vector<int>&a ,const vector<int>&b){if(a[0]<b[0])return true;else if(a[0]==b[0]){if(a[1]<b[1])return true;}return false;}vector<vector<int>> merge(vector<vector<int>>& intervals) {//排序sort(intervals.begin(),intervals.end(),cmp);//定义一个结果vector<vector<int>>res;//定义左端点,右端点int left = intervals[0][0];int right = intervals[0][1];//如果区间集合中没有或者只有一个if(intervals.size()==0)return {{0,0}};else if(intervals.size()==1)return {{left,right}};//for循环遍历for(int i=1;i<intervals.size();i++){//判断当前是否重叠if(intervals[i][0]<=right)//当前区间的左端点小于等于前一个区间的右端点位置,就是重叠的{//更新右端点right = max(right,intervals[i][1]);}else if(intervals[i][0]>right)//当前区间的左端点与上一个区间没有重叠{//记录上一个区间res.push_back({left,right});//将左右端点位置更新left = intervals[i][0];right = intervals[i][1];}//如果最后一个区间,只是加进去了,但是没有记录if(i==intervals.size()-1){res.push_back({left,right});}}return res;}
};

单调递增的数字

题目链接:738. 单调递增的数字 - 力扣(LeetCode)

代码随想录

整体思路:

        从后往前遍历,当前数字比前一个数字大,就将前边的所有数字变为9,当前数字减1,
因为比较的是当前数字与右边数字的大小,更改的是当前数字的大小(当前-1),所以其实顺序是从右向左才能将右边更改了的不动,更改左边的不会影响右边的数字

整体代码:

class Solution {
public:int monotoneIncreasingDigits(int n) {//从后往前遍历,当出现当前数字大于前一个数字的时候,就让当前数字-1,前边所有位置变成9//因为是数字,所以需要取余10记录最低位置是多少int vec =0;//记录最小位置的数字vector<int>res;//记录每一个位置上的数字,注意是反方向的while(n!=0){vec = n%10;if(res.size()==0){res.push_back(vec);}else{if(vec>res[res.size()-1])//如果当前的数字大于前边一位的数字,当前数字减1,其余数字全部变成9{vec = vec-1;for(int i=0;i<res.size();i++){res[i] = 9;}res.push_back(vec);}else//否则正常添加数字{res.push_back(vec);}}n = n/10;//下一次的大小}//统计数字是多少long long sum =0;for(long long i=0,j=1;i<res.size();i++){sum += res[i]*j;j  *= 10;}return sum ;}
};

http://www.dtcms.com/a/294584.html

相关文章:

  • 面试实战,问题七,Object类中包含哪些常用方法及其作用,怎么回答
  • biji 1
  • 开源 Arkts 鸿蒙应用 开发(十)通讯--Http数据传输
  • RAG深入理解和简易实现
  • Linux基础服务(Crontab和NFS)
  • 解决报错:ModuleNotFoundError: No module named ‘_pafprocess‘
  • 测试左移方法论
  • NX741NX777美光固态闪存NX783NX791
  • 算法思想之队列
  • 精准医学在肿瘤治疗中的应用案例研究
  • 终端VS命令解释器(Linux Windows)
  • 一招拿捏Windows的软件,仅仅1.22M
  • 如何硬解析 .shp 文件中的几何体,拯救 .dbf、.shx 等文件缺失的 ESRI Shapefile 格式文件
  • (Python)类的练习与巩固(图书管理系统扩展)(类与方法的基础教程)(if条件扩展)(动态类型)(Python教程)
  • LLC协议支持哪些类型的帧?它们各自的功能是什么?
  • IAR Embedded Workbench for ARM 8.1 安装教程
  • 深兰科技陈海波:AI企业出海要坚持“区域深耕”与“长期主义”
  • 《设计模式之禅》笔记摘录 - 9.责任链模式
  • 使用Ollama,VLLM,LMDeploy部署大模型
  • 二分查找-162.寻找峰值-力扣(LeetCode)
  • P1040 [NOIP 2003 提高组] 加分二叉树
  • 小米浏览器overflow不能左右滑动
  • spring-cloud概述
  • (Arxiv-2025)OVIS-U1技术报告
  • 想曰加密工具好用吗?本地安全、支持多算法的加密方案详解
  • NTC热敏电阻计算公式
  • 【大模型】Hugging Face常见模型格式详解
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-6,(知识点:二极管,少子多子,扩散/漂移运动)
  • mysql中ROW_NUMBER()、RANK()、DENSE_RANK()用法及区别
  • 在AI深度嵌入企业业务的当下——AI时代的融合数据库