给出一个无重叠的按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
样例
插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。
插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。
直接将数从小到大存到数组,接着再存到vec2中即可。注意插入的有可能是[6,6]这样的。直接将其插入到正确位置即可。
vector<Interval> vec2;
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
// write your code here
bool a[100001];
memset(a, false, sizeof(a));
int size = intervals.size();
int max = 0;
for (int i = 0; i < size; i++) {
for (int j = intervals[i].start; j < intervals[i].end; j++) {
a[j] = true;
}
}
if (size != 0) {
max = intervals[size - 1].end;
}
for (int i = newInterval.start; i < newInterval.end; i++) {
a[i] = true;
}
if (max < newInterval.end) {
max = newInterval.end;
}
int i = 0;
bool flag = true;
while (i <= max) {
while (!a[i] && i <= max) {
i++;
}
if (i > max) {
break;
}
if (flag && newInterval.start < i && newInterval.start == newInterval.end) {
flag = false;
vec2.push_back(newInterval);
}
int start = i, end = 0;
while (a[i] && i <= max) {
i++;
}
if (i > max) {
break;
}
end = i;
Interval val(start, end);
vec2.push_back(val);
}
return vec2;
}