vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> all = intervals; all.push_back(newInterval); sort(all.begin(), all.end());
vector<vector<int>> result;
for (auto& iv : all) {
int start = iv[0], end = iv[1];
vector<int>* last = result.empty() ? nullptr : &result.back();
if (last != nullptr && start <= (*last)[1]) (*last)[1] = max((*last)[1], end);
else result.push_back({start, end});
}
return result;
}
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> all = new ArrayList<>();
for (int[] iv : intervals) all.add(iv);
all.add(newInterval);
all.sort((a, b) -> a[0] - b[0]);
List<int[]> result = new ArrayList<>();
for (int[] iv : all) {
int start = iv[0], end = iv[1];
int[] last = result.isEmpty() ? null : result.get(result.size() - 1);
if (last != null && start <= last[1]) last[1] = Math.max(last[1], end);
else result.add(new int[]{start, end});
}
return result.toArray(new int[0][]);
}
def insert(intervals, new_interval):
all_iv = sorted(intervals + [new_interval], key=lambda p: p[0])
result = []
for start, end in all_iv:
last = result[-1] if result else None
if last is not None and start <= last[1]: last[1] = max(last[1], end)
else: result.append([start, end])
return result
function insert(intervals: number[][], newInterval: number[]): number[][] {
const all = [...intervals, newInterval].sort((a, b) => a[0] - b[0]);
const result: number[][] = [];
for (const [start, end] of all) {
const last = result[result.length - 1];
if (last !== undefined && start <= last[1]) last[1] = Math.max(last[1], end);
else result.push([start, end]);
}
return result;
}
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> result;
int i = 0;
int n = intervals.size();
while (i < n && intervals[i][1] < newInterval[0]) {
result.push_back(intervals[i]);
i++;
}
int start = newInterval[0], end = newInterval[1];
while (i < n && intervals[i][0] <= end) {
start = min(start, intervals[i][0]);
end = max(end, intervals[i][1]);
i++;
}
result.push_back({start, end});
while (i < n) {
result.push_back(intervals[i]);
i++;
}
return result;
}
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> result = new ArrayList<>();
int i = 0;
int n = intervals.length;
while (i < n && intervals[i][1] < newInterval[0]) {
result.add(intervals[i]);
i++;
}
int start = newInterval[0], end = newInterval[1];
while (i < n && intervals[i][0] <= end) {
start = Math.min(start, intervals[i][0]);
end = Math.max(end, intervals[i][1]);
i++;
}
result.add(new int[]{start, end});
while (i < n) {
result.add(intervals[i]);
i++;
}
return result.toArray(new int[0][]);
}
def insert(intervals, new_interval):
result = []
i = 0
n = len(intervals)
while i < n and intervals[i][1] < new_interval[0]:
result.append(intervals[i])
i += 1
start, end = new_interval
while i < n and intervals[i][0] <= end:
start = min(start, intervals[i][0])
end = max(end, intervals[i][1])
i += 1
result.append([start, end])
while i < n:
result.append(intervals[i])
i += 1
return result
function insert(intervals: number[][], newInterval: number[]): number[][] {
const result: number[][] = [];
let i = 0;
const n = intervals.length;
while (i < n && intervals[i][1] < newInterval[0]) {
result.push(intervals[i]);
i++;
}
let [start, end] = newInterval;
while (i < n && intervals[i][0] <= end) {
start = Math.min(start, intervals[i][0]);
end = Math.max(end, intervals[i][1]);
i++;
}
result.push([start, end]);
while (i < n) {
result.push(intervals[i]);
i++;
}
return result;
}
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> result;
int start = newInterval[0], end = newInterval[1];
bool placed = false;
for (auto& iv : intervals) {
if (iv[1] < start) {
result.push_back(iv);
} else if (iv[0] > end) {
if (!placed) {
result.push_back({start, end});
placed = true;
}
result.push_back(iv);
} else {
start = min(start, iv[0]);
end = max(end, iv[1]);
}
}
if (!placed) result.push_back({start, end});
return result;
}
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> result = new ArrayList<>();
int start = newInterval[0], end = newInterval[1];
boolean placed = false;
for (int[] iv : intervals) {
if (iv[1] < start) {
result.add(iv);
} else if (iv[0] > end) {
if (!placed) {
result.add(new int[]{start, end});
placed = true;
}
result.add(iv);
} else {
start = Math.min(start, iv[0]);
end = Math.max(end, iv[1]);
}
}
if (!placed) result.add(new int[]{start, end});
return result.toArray(new int[0][]);
}
def insert(intervals, new_interval):
result = []
start, end = new_interval
placed = False
for iv in intervals:
if iv[1] < start:
result.append(iv)
elif iv[0] > end:
if not placed:
result.append([start, end])
placed = True
result.append(iv)
else:
start = min(start, iv[0])
end = max(end, iv[1])
if not placed: result.append([start, end])
return result
function insert(intervals: number[][], newInterval: number[]): number[][] {
const result: number[][] = [];
let [start, end] = newInterval;
let placed = false;
for (const iv of intervals) {
if (iv[1] < start) {
result.push(iv);
} else if (iv[0] > end) {
if (!placed) {
result.push([start, end]);
placed = true;
}
result.push(iv);
} else {
start = Math.min(start, iv[0]);
end = Math.max(end, iv[1]);
}
}
if (!placed) result.push([start, end]);
return result;
}
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int n = intervals.size();
int lo = 0, hi = n;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (intervals[mid][1] < newInterval[0]) lo = mid + 1;
else hi = mid;
}
int first = lo;
hi = n;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (intervals[mid][0] <= newInterval[1]) lo = mid + 1;
else hi = mid;
}
int last = lo;
int start = newInterval[0], end = newInterval[1];
if (first < last) {
start = min(start, intervals[first][0]);
end = max(end, intervals[last - 1][1]);
}
vector<vector<int>> result(intervals.begin(), intervals.begin() + first);
result.push_back({start, end});
result.insert(result.end(), intervals.begin() + last, intervals.end());
return result;
}
public int[][] insert(int[][] intervals, int[] newInterval) {
int n = intervals.length;
int lo = 0, hi = n;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (intervals[mid][1] < newInterval[0]) lo = mid + 1;
else hi = mid;
}
int first = lo;
hi = n;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (intervals[mid][0] <= newInterval[1]) lo = mid + 1;
else hi = mid;
}
int last = lo;
int start = newInterval[0], end = newInterval[1];
if (first < last) {
start = Math.min(start, intervals[first][0]);
end = Math.max(end, intervals[last - 1][1]);
}
List<int[]> result = new ArrayList<>(Arrays.asList(intervals).subList(0, first));
result.add(new int[]{start, end});
result.addAll(Arrays.asList(intervals).subList(last, n));
return result.toArray(new int[0][]);
}
def insert(intervals, new_interval):
n = len(intervals)
lo, hi = 0, n
while lo < hi:
mid = (lo + hi) >> 1
if intervals[mid][1] < new_interval[0]: lo = mid + 1
else: hi = mid
first = lo
hi = n
while lo < hi:
mid = (lo + hi) >> 1
if intervals[mid][0] <= new_interval[1]: lo = mid + 1
else: hi = mid
last = lo
start, end = new_interval
if first < last:
start = min(start, intervals[first][0])
end = max(end, intervals[last - 1][1])
result = intervals[:first] + [[start, end]] + intervals[last:]
return result
function insert(intervals: number[][], newInterval: number[]): number[][] {
const n = intervals.length;
let lo = 0, hi = n;
while (lo < hi) {
const mid = (lo + hi) >> 1;
if (intervals[mid][1] < newInterval[0]) lo = mid + 1;
else hi = mid;
}
const first = lo;
hi = n;
while (lo < hi) {
const mid = (lo + hi) >> 1;
if (intervals[mid][0] <= newInterval[1]) lo = mid + 1;
else hi = mid;
}
const last = lo;
let start = newInterval[0], end = newInterval[1];
if (first < last) {
start = Math.min(start, intervals[first][0]);
end = Math.max(end, intervals[last - 1][1]);
}
return [...intervals.slice(0, first), [start, end], ...intervals.slice(last)];
}