57. 插入区间
这个跟上面的那道题有点类似。
题目:


题解:
java
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
//先将intervals转成List
List<int[]> list = new ArrayList<>();
//往List中加入元素
for(int[] row:intervals) {
list.add(row);
}
list.add(newInterval);
//进行排序
list.sort(Comparator.comparingInt(i->i[0]));
//创建一个新的序列
List<int[]> news = new ArrayList<>();
//获取起始元素
int l = list.get(0)[0];
int r = list.get(0)[1];
//进行合并
for(int i=1;i<list.size();i++) {
//如果当前的右边界大于r同时当前左边界小于等于r
if(list.get(i)[1]>r&&list.get(i)[0]<=r) {
r = list.get(i)[1];
}
//如果当前的左边界>r
else if(list.get(i)[0]>r) {
//直接加入news
news.add(new int[]{l,r});
//进行更新l,r
l = list.get(i)[0];
r = list.get(i)[1];
}
}
//进行新增l,r
news.add(new int[]{l,r});
//直接进行转成二维数组
return news.toArray(int[][]::new);
}
}