方法:第二个区间的左区间小于等于第一个区间里的数(第二个区间的左区间小于等于第一个区间的右区间即可),则这两个区间就可以合并,左区间就是第一个区间的左区间,右区间是第一个区间和第二个区间的右区间中较大的值
注意:在直接开始比较之前,应先对区间数组进行排序,这里比较左区间的值即可,从小到大
直接上代码
var merge = function(intervals) {
//先判断传入的数组是否为空
if(intervals.length<2){
return intervals;
}
//为数组进行排序,只排左区间就好了,这里是为了确定左区间的值是最小的
intervals.sort((a,b)=>{return a[0]-b[0]})
//定义一个临时数组curr来存储这个合并后的区间,刚开始的合并区间就是第一个区间
let curr=intervals[0];
let result=[]
//比较第二个区间的左区间是否小于等于第一个区间的右区间
for(let interval of intervals){
if(interval[0]<=curr[1]){
curr[1]=Math.max(curr[1],interval[1])
}else{
//不符合合并条件的,就将这个curr压入result,然后重新创建curr