解题思路:
- 由于原始输入的序列都是已经排好序的,所以遍历判断是否有交集就可以了
- 注意:循环结束条件,判断交集条件,更新策略
class Solution {
public:
vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {
if(!firstList.size() || !secondList.size()){
return {};
}
vector<vector<int>>res;
int i = 0,j = 0;
// 因为两个序列都是有序的,所以遍历到任意一个结尾就应当结束
while(i < firstList.size() && j < secondList.size()){
// 选取最大左区间
int l = max(firstList[i][0],secondList[j][0]);
// 选取最小右区间
int r = min(firstList[i][1],secondList[j][1]);
// 有交集的判定
if(l <= r){
res.push_back({l,r});
}
// 更新策略
if(firstList[i][1] < secondList[j][1]){
i++;
}else{
j++;
}
}
return res;
}
};