56. 合并区间
题目链接:56. 合并区间
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰合并区间
日期:2024-10-06
想法:重叠区间类似问题
Java代码如下:
class Solution {public int[][] merge(int[][] intervals) {List<int[]> res = new ArrayList<>();Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));for(int i = 1; i < intervals.length; i++) {if(intervals[i - 1][1] >= intervals[i][0]) {intervals[i][1] = Math.max(intervals[i - 1][1], intervals[i][1]);intervals[i][0] = intervals[i - 1][0];}else {res.add(new int[]{intervals[i - 1][0], intervals[i - 1][1]});}}res.add(new int[]{intervals[intervals.length - 1][0], intervals[intervals.length - 1][1]});return res.toArray(new int[res.size()][]);}
}
738.单调递增的数字
题目链接:738.单调递增的数字
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰单调递增的数字
日期:2024-10-06
想法:从右往左遍历,如果前一个数大于后面的数(按N数字排序),前一个数-1,后一个数置为9即可。
Java代码如下:
class Solution {public int monotoneIncreasingDigits(int N) {String[] strings = (N + "").split("");int start = strings.length;for (int i = strings.length - 1; i > 0; i--) {if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";start = i;}}for (int i = start; i < strings.length; i++) {strings[i] = "9";}return Integer.parseInt(String.join("",strings));}
}