题目链接:Leetcode986
思路:贪心,由于排好序了,直接双指针扫,思路和归并排序合并比较类似,注意往后移动的条件是尾部,因为一个矩形的结束条件是尾部比完了,不能写成是头部
class Solution {
public:
vector<vector<int>> intervalIntersection(vector<vector<int>>& A, vector<vector<int>>& B) {
//两个矩形交一定是头的右边和尾的最左边
vector<vector<int>> ans;
ans.clear();
if (A.size()==0 || B.size() == 0) return ans;
int i=0, j=0;
int l, r;
while(i<A.size() && j<B.size()) {
l = max(A[i][0], B[j][0]);
r = min(A[i][1], B[j][1]);
if (l<=r) ans.push_back({l, r}); //找到一组交,注意相等也是一组解,因为是闭区间
if (r==A[i][1]) i++;
else j++;
}
return ans;
}
};