给你一个 有序的 不相交区间列表 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
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-interval 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
vector<vector<int>> removeInterval(vector<vector<int>>& intervals, vector<int>& toBeRemoved) {
vector<vector<int>> ans;
int l = toBeRemoved[0], r = toBeRemoved[1];
for(auto& inter : intervals)
{
if(inter[1] <= l || inter[0] >= r)//不相交
ans.push_back(inter);
else//相交有两种情况
{
if(inter[0] < l)
ans.push_back({inter[0], l});
if(inter[1] > r)
ans.push_back({r, inter[1]});
}
}
return ans;
}
};
204 ms 32.2 MB