56. Merge Intervals

25 年 10 月 18 日 星期六
135 字
1 分钟

56. Merge Intervals

Screenshot 2025-10-18 at 1.36.24 am

一句话思路:

p[0] <= ans[m - 1][1] 时可以合并,右端点最大值为ans[m - 1][1] = Math.max(ans[m - 1][1], p[1]);

js
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function (intervals) {
  const ans = []
  // sort是原地遍历
  intervals.sort((a, b) => a[0] - b[0])
  // 遍历数组
  for (const p of intervals) {
    const m = ans.length
    if (m && p[0] <= ans[m - 1][1]) {
      // 可以合并
      ans[m - 1][1] = Math.max(ans[m - 1][1], p[1]) // 更新右端点最大值
    } else {
      // 不相交,无法合并
      ans.push(p) // 新的合并区间
    }
  }
  return ans
}

文章标题:56. Merge Intervals

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/56_merge_intervals[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。