javascript
var merge = function(intervals) {
let ans=[];
intervals.sort((a,b)=>a[0]-b[0]);
for(const p of intervals){
const m=ans.length
if(m&&p[0]<=ans[m-1][1]){
ans[m-1][1]=Math.max(ans[m-1][1],p[1]);
}else{
ans.push(p);
}
}
return ans;
};
算法核心:贪心+排序 ,为了方便合并,先将左端点从小到大排序,向右遍历取出子数组,然后用一个新数组ans来存储结果,如果ans数组为空或者要取出来的一个子数组不能合并到ans中已有的数组中的时候,就直接将这个取出子数组push进ans数组,反之,将其与ans中最后一个(因为已经排序了)子数组合并即可,合并一开始我想的是"真"合并用...slice来操作,其实这里的合并说简单点就是更新右端点,看右端点是不变,还是更新为放进来的子数组的右端点,这里用max来比较即可