标签:fun start tar 行合并 fine div return 输出 turn
将一组区间中所有重叠的区间进行合并,例如 [起点,终点] 这种方式
输入:[[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))
标签:fun start tar 行合并 fine div return 输出 turn
原文地址:https://www.cnblogs.com/Super-scarlett/p/13036941.html