亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript合并區間的算法

JavaScript合并區間的算法

飲歌長嘯 2018-09-06 11:10:21
舉個例子:有如下三個區間:[     [1,100],     [50,200],     [300,400],     ...  //可以更多 ]現在需要一個算法來合并區間, 合并之后是:[     [1,200],     [300,400],     ... ]就是說重合的區間是需要合并的, 這樣的算法該怎么寫? 大神們給點思路吧
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

function merge(intervals) {

    intervals.sort(function(a, b) {

        if (a[0] !== b[0])

            return a[0] - b[0];

        return a[1] - b[1];

    });

    var len = intervals.length,

        ans = [],

        start, end;


    for (var i = 0; i < len; i++) {

        var s = intervals[i][0],

            e = intervals[i][1];

        if (start === undefined)

            start = s, end = e;

        else if (s <= end)

            end = Math.max(e, end);

        else {

            var part = [start, end];

            ans.push(part);

            start = s;

            end = e;

        }

    }


    if (start !== undefined) {

        var part = [start, end];

        ans.push(part);

    }


    return ans;

};


var arr = [

    [1, 100],

    [50, 200],

    [300, 400]

]

console.log(merge(arr))


查看完整回答
反對 回復 2018-10-13
  • 1 回答
  • 0 關注
  • 1012 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號