給定兩個由一些 閉區(qū)間 組成的列表,每個區(qū)間列表都是成對不相交的,并且已經(jīng)排序,返回這兩個區(qū)間列表的交集。
示例:
輸入:A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]] 輸出:[[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]

區(qū)間列表交集.png
完整代碼:
/**
* @param {number[][]} A
* @param {number[][]} B
* @return {number[][]}
*/
var intervalIntersection = function(A, B) {
let res = [];
let i = 0;
let j = 0;
while (i < A.length && j < B.length) {
// 左指針取大的
let left = Math.max(A[i][0], B[j][0]);
// 右指針取小的
let right = Math.min(A[i][1], B[j][1]);
if (left <= right) res.push([left, right]);
// 子區(qū)間上界較大的不移動
A[i][1] > B[j][1] ? j++ : i++;
}
return res;
};
