Merge intervals

难度: Medium, 公司: 字节 研发 facebook

牛客:

2.题目描述

给出一组区间,请合并所有重叠的区间。请保证合并后的区间按区间起点升序排列。示例1

输入

复制

返回值

复制

3.思路

  1. 先把intervals按照start 进行排序

  2. two points method: slow pt 指向要返回的list的最后一个interval, fast pt用于遍历查找下一个interval

  3. 对比slowpt interval和fast pt的interval

    1. case 1: if slow interval.end > fast.interval. end ->continue

    2. case 2: if slow interval.end > fast. interval .start and slow interval end < fast interval.end -> merge intervals by updating slow.interval end = fast.interval.end

    3. case 3: if slow interval end < fast interval.start -> slow += 1, copy fast interval to slow

    4. move fast forward by 1

  4. Time: O(nlogn) for sorting +O(n) for merging. Space: O(1)

4. Code

Last updated

Was this helpful?