给你一个 有序的 不相交区间列表 intervals
和一个要删除的区间 toBeRemoved
, intervals
中的每一个区间 intervals[i] = [a, b]
都表示满足 a <= x < b
的所有实数 x
的集合。
我们将 intervals
中任意区间与 toBeRemoved
有交集的部分都删除。
返回删除所有交集区间后, intervals
剩余部分的 有序 列表。
示例 1:
输入:intervals = [[0,2],[3,4],[5,7]], toBeRemoved = [1,6]
输出:[[0,1],[6,7]]
示例 2:
输入:intervals = [[0,5]], toBeRemoved = [2,3]
输出:[[0,2],[3,5]]
提示:
1 <= intervals.length <= 10^4
-10^9 <= intervals[i][0] < intervals[i][1] <= 10^9
C++
class Solution {
public:
vector<vector<int>> removeInterval(vector<vector<int>>& intervals, vector<int>& toBeRemoved)
{
vector<vector<int>> res;
if(toBeRemoved.size()<=1)
{
return intervals;
}
int a=toBeRemoved[0];
int b=toBeRemoved[1];
for(auto it:intervals)
{
int left=it[0];
int right=it[1];
if(right<=a)
{
res.push_back({left,right});
}
else if(left<a && right>a && right<=b)
{
res.push_back({left,a});
}
else if(left<a && right>b)
{
res.push_back({left,a});
res.push_back({b,right});
}
else if(left>=a && left<=b && right>b)
{
res.push_back({b,right});
}
else if(left>=b)
{
res.push_back({left,right});
}
}
return res;
}
};