返回介绍

合并区间

发布于 2024-09-16 00:06:31 字数 814 浏览 0 评论 0 收藏 0

题目内容

解题思路

prev 初始化为第一个区间,curr 为当前遍历到的区间, res 为结果数组。尝试合并 prev 和 curr,合并后更新到 prev,合并后的新区间还可能会和后面的区间重合,继续尝试合并新的 curr,更新给 prev,直到不能合并,将 prev 推入到 res。先合并遇到不重合再推入 prev,当考察完最后一个区间,遇不到不重合的区间,要单独把 prev 推入到 res。

代码实现

const merge = (intervals: number[][]): number[][] => {
  let res: number[][] = [];
  intervals.sort((a: number[], b: number[]) => a[0] - b[0]);
  let prev: number[] = intervals[0];
  for (let i = 1; i < intervals.length; ++i) {
    let curr = intervals[i];
    if (prev[1] >= curr[0]) {
      prev[1] = Math.max(prev[1], curr[1]);
    } else {
      res.push(prev);
      prev = curr;
    }
  }
  res.push(prev);
  return res;
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文