57. 插入区间
题目链接
枚举
- 枚举每个区间,判断该区间与需要插入的区间是否相交
- 若不相交,且比需要插入的区间小,那么直接放入List中
- 若不相交,但比需要插入的区间大,那么先把区间插入,再把这个区间放入List
- 若相交,则把这个区间和需要插入的区间合并,继续枚举
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
int len = intervals.length;
List<int[]> ans = new ArrayList<>(len);
boolean flag = false;
int L = newInterval[0], R = newInterval[1];
for(int[] interval : intervals) {
if(interval[0] > R){
if(!flag){
ans.add(new int[]{L, R});
flag = true;
}
ans.add(interval);
} else if(interval[1] < L){
ans.add(interval);
} else {
L = Math.min(L, interval[0]);
R = Math.max(R, interval[1]);
}
}
if(!flag) ans.add(new int[]{L, R});
return ans.toArray(new int[ans.size() - 1][]);
}
}