【leetcode】56.合并区间js

题目

代码

思路是先对数组进行排序,以区间第一个数从小到大排。然后维护一个ans数组先放入第一个区间,后续遍历到的区间都要和ans数组里最后一个区间last作比较:

  • 如果可以合并,修改last;
  • 如果不能合并,当前区间直接加入res数组,成为下一个last;
javascript 复制代码
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function(intervals) {
    intervals.sort((a, b) => a[0] - b[0])
    const ans = [intervals[0]]
    for (let i = 1; i < intervals.length; i++) {
        const last = ans[ans.length - 1]
        if (last[1] >= intervals[i][0]) {
            last[1] = Math.max(last[1], intervals[i][1])
        } else {
            ans.push(intervals[i])
        }
    }
    return ans
};

这里注意数组是引用数据类型,所以last并不是复制了一份最后一个区间的副本,而是**指向了 ans 数组中那个区间对象的内存地址,**因此不需要先pop再push。

时间复杂度为O(nlogn)。

相关推荐
非优秀程序员5 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
文丑颜不良啊8 小时前
LeetCode2481~2500题目解析
java·leetcode
武子康12 小时前
驾驶轨迹换个坐标,就能给移动机器人用吗?
人工智能·算法·机器学习
文丑颜不良啊15 小时前
LeetCode2461~2480题目解析
java·leetcode
文丑颜不良啊16 小时前
LeetCode2441~2460题目解析
java·leetcode
文丑颜不良啊17 小时前
LeetCode2521~2540题目解析
java·leetcode
lisw0518 小时前
Dayhoff的PAM替换矩阵理论评介!
线性代数·算法·矩阵
一起学安全技术19 小时前
拆大模型 03|注意力的一句话版本:不用论文讲清 Attention
深度学习·算法·语言模型·transformer
Delightrs20 小时前
Rust LeetCode238 算法题解
开发语言·算法·rust