js算法题---合并区间
Posted 苏小米
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js算法题---合并区间相关的知识,希望对你有一定的参考价值。
将一组区间中所有重叠的区间进行合并,例如 [起点,终点] 这种方式
输入:[[1,3],[2,6],[15,18],[8,10],[10,11],[7,8]]
输出:[[1,6],[15,18],[7,11]]
分析:
首先需要排序,排序之后,就可以看看有没有重叠的,如果重叠就合并。
var arr = [[1,3], [2,6],[15,18],[8,10],[10,11],[7,8]] function merge(arr){ //排序 arr.sort(function(a,b){ if(a[0] != b[0]){ return a[0]-b[0] } return a[1] - b[1] }) let ans = [], start, end; //排序之后,看看有没有重叠的,如果有,合并 for(let i=0;i<arr.length;i++){ let s = arr[i][0], e = arr[i][1]; if(start === undefined){ start = s, end = e; }else if(s <= end){ end = Math.max(e, end) }else{ let part = [start, end]; ans.push(part) start = s; end = e } } if(start !== undefined){ let part = [start, end] ans.push(part) } return ans } console.log( merge(arr))
以上是关于js算法题---合并区间的主要内容,如果未能解决你的问题,请参考以下文章