Problem: 57. 插入区间
👨🏫 代码随想录
模拟
⏰ 时间复杂度: O ( n ) O(n) O(n)
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
int idx = 0;
List<int[]> res = new ArrayList<>();
while (idx < intervals.length && intervals[idx][1] < newInterval[0]) { // 寻找需要合并的区间
res.add(intervals[idx]);
idx++;
}
while (idx < intervals.length && intervals[idx][0] <= newInterval[1]) { // 待合并区间头小于当前区间尾
newInterval[0] = Math.min(newInterval[0], intervals[idx][0]); // 更新待合并区间头
newInterval[1] = Math.max(newInterval[1], intervals[idx][1]); // 更新待合并区间尾
idx++;
}
res.add(newInterval);// 加入合并区间
while (idx < intervals.length) { // 加入剩余区间
res.add(intervals[idx++]);
}
return res.toArray(new int[res.size()][]);
}
}