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

代码随想录训练营第31天 || 56. 合并区间 738. 单调递增的数字

56. 合并区间

讲解:代码随想录

思路:

与之前射气球的题很像,也是先用左右边界的一个边界排序,再判断是否重叠。左边界排序,使用正序进行遍历,右边界排序逆序进行遍历,原因是左边界排序,最左边的左边界一定是最小的,但右边界不一定,同理右边界。

代码:

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        result = []
        if len(intervals)==0:
            return result
        intervals.sort(key = lambda x: x[0])
        result.append(intervals[0])
        for i in range(1,len(intervals)):
            if intervals[i][0] <= result[-1][1]:
                result[-1][1]=max(intervals[i][1],result[-1][1])
            else:
                result.append(intervals[i])
        return result

遇到的问题:

1.对于左右边界排序的不同处理方式

738. 单调递增的数字

讲解:代码随想录

思路:

一个循环判断当前数字是否为递增数字,如果是直接返回,如果不是,就记录非递增数字的最高位,把最高位减一,然后把最高位的低位都改为9,此时就为最大递增数字

代码:

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string strnum = to_string(n);
        int flag = strnum.size();
        for( int i =strnum.size()-1; i> 0;i--)
        {
            if(strnum[i] < strnum[i-1])
            {
                flag = i;
                strnum[i-1]--;//此时是进行ascii码的加减,只适用于0到9的数
            }
        }
        for(int i =flag;i<strnum.size();i++)//flag的作用很巧妙,如果上一个循环没有进入if,也就是最大单调递增数字就是自己本身,可以直接跳过此循环。当最大单调递增数字不是自己本身时,将flag后的数字每一位调整成9
        {
            strnum[i] = '9';
        }
        return stoi(strnum);//stoi()函数作用是转化为int类型
    }
};

遇到的问题:

1.strnum[i-1]--;//此时是进行ascii码的加减,只适用于0到9的数

2.flag 的作用:for(int i =flag;i<strnum.size();i++)//flag的作用很巧妙,如果上一个循环没有进入if,也就是最大单调递增数字就是自己本身,可以直接跳过此循环。当最大单调递增数字不是自己本身时,将flag后的数字每一位调整成9

3.return stoi(strnum);//stoi()函数作用是转化为int类型

相关文章:

  • gitee基本使用
  • Shell编程之循环语句
  • 【前端样式】使用Flexbox实现经典导航栏:自适应间距与移动端折叠实战
  • MATLAB基本数据类型
  • 如何一键自动提取CAD图中的中心线(如墙体、道路、巷道中心线等)
  • Android常见界面控件、程序活动单元Activity练习
  • LeetCode算法题(Go语言实现)_46
  • 3.2.2.3 Spring Boot配置拦截器
  • C++学习之数据库操作
  • AI日报 - 2025年4月15日
  • 华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 子串-滑动窗口的最大值
  • 科研软件分享
  • AI agents系列之全从零开始构建
  • 批处理(Batch Processing)的详解、流程及框架/工具的详细对比
  • 前端工程化之自动化构建
  • .NET MCP 文档
  • 多模态思维链(Multimodal Chain of Thought, MCoT)六大技术支柱在医疗领域的应用
  • OpenCv--换脸
  • 群辉搭建静态网站
  • 主播说联播丨六部门出台新政!来华买买买,实惠多多多
  • 王文涛会见德国汽车工业协会主席穆勒
  • 京东美团开打,苦了商家?
  • “90后”高层建筑返青春:功能调整的技术路径和运营考验
  • 特朗普承认“24小时结束俄乌冲突”是玩笑:大家都知道
  • 交警不在就闯红灯?上海公安用科技手段查处非机动车违法