【每天学习一点算法 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)

相关推荐
随意起个昵称19 小时前
区间dp-基础题目1(石子合并)
算法·动态规划
吞下星星的少年·-·19 小时前
线段树模板
算法
段一凡-华北理工大学20 小时前
2026 高炉炼铁智能化技术全景与演进路径~系列文章11:演进路径与行业未来
大数据·网络·人工智能·算法·工业智能体·高炉炼铁智能化
喜欢踢足球的老罗20 小时前
从移动开发转型 AI Agent 工程师:我做了一个开源学习系统
人工智能·学习
叶小鸡20 小时前
小鸡玩算法-力扣HOT100-多维动态规划
算法·leetcode·动态规划
星马梦缘20 小时前
aaaaa
数据结构·c++·算法
wuxinyan12321 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
菜菜的顾清寒21 小时前
力扣HOT100(42)链表-随机链表的复制
算法·leetcode·链表
lqqjuly21 小时前
模型剪枝与稀疏化:理论、算法与可运行实现
人工智能·算法·剪枝
逻辑君21 小时前
Foresight研究报告【20260011】
人工智能·线性代数·算法·矩阵