《代码随想录》刷题打卡day27:贪心算法part05

发布时间:2026/10/11 6:11:22
《代码随想录》刷题打卡day27:贪心算法part05 文章目录【56.合并区间】【738.单调递增的数字】总结【56.合并区间】思路和前些题相同比较简答。第一个区间就可以放进结果集里后面如果重叠在result上直接合并简化操作。class Solution { public: static bool cmp(const vectorint a, vectorint b){ return a[0] b[0]; } vectorvectorint result; vectorvectorint merge(vectorvectorint intervals) { if(intervals.size() 0) return result; sort(intervals.begin(), intervals.end(), cmp); // 第一个区间就可以放进结果集里后面如果重叠在result上直接合并 result.push_back(intervals[0]); for(int i 1; i intervals.size(); i){ if(result.back()[1] intervals[i][0]){ // 发现重叠区间 // 合并区间只更新右边界就好因为result.back()的左边界一定是最小值因为我们按照左边界排序的 result.back()[1] max(result.back()[1], intervals[i][1]); }else{ result.push_back(intervals[i]); } } return result; } };【738.单调递增的数字】思路例如98一旦出现strNum[i - 1] strNum[i]的情况非单调递增首先想让strNum[i - 1]–然后strNum[i]给为9这样这个整数就是89即小于98的最大的单调递增整数。从后向前遍历class Solution { public: int monotoneIncreasingDigits(int n) { string strNum to_string(n); // flag用来标记赋值9从哪里开始 // 设置为这个默认值为了防止第二个for循环在flag没有被赋值的情况下执行 int flag strNum.size(); for(int i strNum.size() - 1; i 0; i--){ if(strNum[i - 1] strNum[i]){ flag i; strNum[i - 1]--; } } for(int i flag; i strNum.size(); i){ strNum[i] 9; } return stoi(strNum); } };总结

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询