万宁市网站建设_网站建设公司_UI设计师_seo优化
2026/1/18 21:02:34 网站建设 项目流程

代码随想录算法训练营第三十一天 | 56-合并区间、738-单调递增的数字


LeetCode56 合并区间

题目链接:https://leetcode.cn/problems/merge-intervals/description/

文章讲解:https://programmercarl.com/0056.合并区间.html

视频讲解:https://www.bilibili.com/video/BV1wx4y157nD/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 重叠区间问题,先排序,让所有的相邻区间尽可能的重叠在一起

​ 按照左边界从小到大排序后,如果 intervals[i][0] <= intervals[i - 1][1] 即 intervals[i] 的左边界 <= intervals[i - 1] 的右边界,则一定有重叠

​ 用合并区间后左边界和右边界,作为一个新的区间加入到result数组即可

image-20260118202332288

class Solution {public int[][] merge(int[][] intervals) {if(intervals.length == 0 || intervals.length == 1){return intervals;}Arrays.sort(intervals, (a, b)->Integer.compare(a[0], b[0]));List<int[]> result = new ArrayList<>();int start = intervals[0][0];int maxRightEdge = intervals[0][1];for(int i = 1; i < intervals.length; i++){if(intervals[i][0] <= maxRightEdge){maxRightEdge = Math.max(maxRightEdge, intervals[i][1]);}else{result.add(new int[]{start, maxRightEdge});start = intervals[i][0];maxRightEdge = intervals[i][1];}}result.add(new int[]{start, maxRightEdge});return result.toArray(new int[result.size()][]);}
}

LeetCode738 单调递增的数字

题目链接:https://leetcode.cn/problems/monotone-increasing-digits/description/

文章讲解:https://programmercarl.com/0738.单调递增的数字.html

视频讲解:https://www.bilibili.com/video/BV1Kv4y1x7tP/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 注意设置tag标记从哪里开始往后赋值为9,初始值不落在数组中以防误伤

image-20260118205043759

class Solution {public int monotoneIncreasingDigits(int n) {String str = String.valueOf(n);char[] num = str.toCharArray();int tag = num.length;for(int i = num.length-1; i > 0; i--){if(num[i] < num[i-1]){num[i-1]--;tag = i;}}for(int i = tag; i < num.length; i++){num[i] = '9';}str = String.valueOf(num);return Integer.parseInt(str);}
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询