JavaScript - 區(qū)間列表交集(雙指針法)

給定兩個由一些 閉區(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;
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容