intervals = [[2, 3], [2, 2], [3, 3], [1, 3], [5, 7], [2, 2], [4, 6]];
function megrr(intervals) {
let length = intervals.length;
//数组排序,按照第一个
intervals.sort(function (a, b) { return a[0] - b[0] });
let args = [intervals[0]];
// console.log(intervals);
//每个数组中第二个数字和i+1个数组中比大小,如果成立,intervals数组长度减一
for (let i = 0, j = 1; j < length; j++) {
//定义一个临时的数组用于合并?
// console.log('args',args);
// console.log('intervals的第一个数字:',intervals[j][0]);
// console.log(args[i][1], intervals[j][0]);
if (args[i][1] >= intervals[j][0] && args[i][1] <= intervals[j][1]) {
if (args[i][1] >= intervals[j][1]) {
} else if(args[i][1] <= intervals[j][1]){
let temp = args[i][0]
args.pop();
// console.log('顶掉以后',args);
//合并
args.push([temp, intervals[j][1]]);
// console.log('what1?')
// console.log(args);
}
//先顶掉最后面的,再合并
// console.log(args)
} else if (args[i][1] > intervals[j][1]) {
// console.log('what2?')
// console.log(args);
}
else {
// console.log('what3?')
args.push(intervals[j]);
// console.log(args);
i = i + 1;
}
}
return args;
};
console.log(megrr(intervals))
var merge2 = function(intervals) {
intervals.sort((a, b) => a[0] - b[0]) // 对每个数组的首元素进行升序排序
const result = [] // 结果集
let temp = intervals[0] // 取第一个数组作为临时变量
for(let i = 1; i < intervals.length; i++) {
const item = intervals[i]
if(temp[1] >= item[0]) { // 此时说明有交集,取右边界大的元素来实现区间合并
temp[1] = Math.max(temp[1], item[1])
}else { // 没有交集直接放入结果集
result.push(temp)
temp = item
}
}
result.push(temp) // 将最后的临时变量也放入结果集
return result
};
console