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));
}
}
标签:int,res,56,随想录,length,intervals,Integer,738,strings
From: https://www.cnblogs.com/wowoioo/p/18449337