【每天学习一点算法 2026/03/26】合并区间

每天学习一点算法 2026/03/26

题目:合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervalsi = starti, endi 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

我这里首先想到的方法是,维护一个存储结果区间的数组 res 和 指向最新元素的 index,首先将 intervals 的第一个区间放进去,然后遍历剩余的区间,判断区间是否重合,重合就合并index不变,未重合就将区间 push 进 res,index++(由于区间顺序不确定,所以这种方法需要排序)

typescript 复制代码
function merge(intervals: number[][]): number[][] {
  if (intervals.length < 2) return intervals // 只有一个区间直接返回
  intervals = intervals.sort((a, b) => a[0] - b[0]) // 按区间左边界排序
  const res: number[][] = [intervals[0]] // 初始放入最小的区间
  let index = 0 // 初始指向第一个区间
  // 遍历剩余区间
  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] <= res[index][1]) {
       // 区间重合 合并区间
      res.splice(index, 1, [res[index][0], Math.max(res[index][1], intervals[i][1])])
    } else {
      // 区间未重合 
      res.push(intervals[i])
      index++
    }
  }
  return res
};

题目来源:力扣(LeetCode)

相关推荐
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack203 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树3 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE2124 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2124 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术4 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦4 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户497863050734 天前
(一)小红的数组操作
算法·编程语言