Leetcode Tag Search | Back

56. Merge Intervals

Category: /leetcode
Leetcode Link Interval Template

Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

Example 1:

Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:

Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
 

Constraints:

1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104

Solution

Merge intervals: sort and merge

prefix sum

T: O(NlogN), S:O(N)

def merge(self, itnervals):
  intervals.sort(key=lambda x: x[0])
  res = [intervals[0]]
  for interval in intervals[1:]:
    if res[-1][1] < interval[0]:
      res.append(interval)
    else:
      res[-1][1] = max(res[-1][1], interval[1])
  return res

讨论

提示

  • 如果看不到讨论部分, 请暂时关掉adblock in Firefox/Chrome
  • 本网站使用Javascript实现评论功能, 此处外链对提高您的网站PR没有帮助. (潜台词: 请不要灌水, 谢谢)