【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)。

相关推荐
鹿角片ljp8 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
鼎艺创新科技8 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
程序员三藏9 小时前
Python+requests实现接口自动化测试
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
.道阻且长.11 小时前
11.LeetCode算法习题讲解--滑动窗口--将x减到0的最小操作数
算法·leetcode·职场和发展
wenyq711 小时前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
.格子衫.12 小时前
032动态规划之区间DP——算法备赛
算法·动态规划
青 春 记 忆12 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
小欣加油13 小时前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
不会代码的小猴13 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
怪奇云呼军13 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频