class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
int[][] tmp = new int[intervals.length + 1][2];
System.arraycopy(intervals, 0, tmp, 0, intervals.length);
tmp[intervals.length] = newInterval;
return merge(tmp);
}
public int[][] merge(int[][] intervals) {
int n = intervals.length;
if (n == 1) {
return intervals;
}
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o1[0] - o2[0];
}
});
List<int[]> lst = new ArrayList<>();
int i = 0;
while (i < n) {
int[] ai = intervals[i];
int j = i + 1, li = ai[0], ri = ai[1];
while (j < n) {
int[] aj = intervals[j];
if (ri >= aj[0]) {
ri = Math.max(aj[1], ri);
} else {
break;
}
j++;
}
i = j;
lst.add(new int[]{li, ri});
}
int[][] result = new int[lst.size()][2];
for (int j = 0; j < lst.size(); j++) {
result[j] = lst.get(j);
}
return result;
}
}
57. 插入区间
最新推荐文章于 2024-09-28 22:05:59 发布