当前位置: 首页> 教育> 高考 > 东道设计学院_疫情今天最新消息_培训心得体会1500字_常州seo

东道设计学院_疫情今天最新消息_培训心得体会1500字_常州seo

时间:2025/7/11 23:24:51来源:https://blog.csdn.net/LXY999222/article/details/146280430 浏览次数:1次
东道设计学院_疫情今天最新消息_培训心得体会1500字_常州seo

31.代码随想录算法训练营第三十一天|56. 合并区间,738. 单调递增的数字 ,968. 监控二叉树(一刷跳过)

56. 合并区间 - 力扣(LeetCode),

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104
class Solution {public int[][] merge(int[][] intervals) {List<List<Integer>> res = new LinkedList<>();Arrays.sort(intervals,(x,y)->Integer.compare(x[0],y[0]));int left = intervals[0][0];int right = intervals[0][1];for(int i = 1;i < intervals.length;i++){if(intervals[i][0] > right){res.add(new ArrayList<>(Arrays.asList(left,right)));left = intervals[i][0];right = intervals[i][1];}else{right = Math.max(intervals[i][1],right);}}res.add(new ArrayList<>(Arrays.asList(left,right)));int[][] result = new int[res.size()][2];for (int i = 0; i < res.size(); i++) {result[i][0] = res.get(i).get(0);result[i][1] = res.get(i).get(1);}return result;}
}

738. 单调递增的数字 - 力扣(LeetCode)

当且仅当每个相邻位数上的数字 xy 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增

示例 1:

输入: n = 10
输出: 9

示例 2:

输入: n = 1234
输出: 1234

示例 3:

输入: n = 332
输出: 299

提示:

  • 0 <= n <= 109

思想:因为判断的是单调递增,如果从前往后遍历,后续的节点会受到再后面节点的影响。如果从后往前遍历,后面的已经变得有序,然后再加入,让之前得再变得有序。

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

968. 监控二叉树 - 力扣(LeetCode)

关键字:东道设计学院_疫情今天最新消息_培训心得体会1500字_常州seo