合并乱序区间

发布于 2025-01-22 01:32:10 字数 704 浏览 3 评论 0

给出一个区间的集合,请合并所有重叠的区间。

let arr = [[1,3],[2,6],[8,10],[15,18]]
// [ [ 1, 6 ], [ 8, 10 ], [ 15, 18 ] ]

结果

function merge(intervals) {
  if (!intervals || !intervals.length) return [];
  intervals.sort((a, b) => a[0] - b[0]); // 按照区间第一位进行排序
  let result = [intervals[0]] // 排序之后第一个是最小的
  // [[1,3]]
  for (let i = 1; i < intervals.length; i++) { // 从第二个开始比较
    let resultLast = result.length - 1
    if (result[resultLast][1] > intervals[i][0]) { // 判断结尾是不是大于开始
      result[resultLast][1] = Math.max(result[resultLast][1], intervals[i][1]) // 区间重复就进行合并了
    } else {
      result.push(intervals[i]) // 区间没有重复
    }
  }
  return result
}

console.log(merge(arr))

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
24 人气
更多

推荐作者

alipaysp_qCPZes5aGh

文章 0 评论 0

BeginEnd

文章 0 评论 0

温柔一刀

文章 0 评论 0

qq_eW9dqv

文章 0 评论 0

cz003

文章 0 评论 0

mb_y5iXe1gw

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文