less than 1 minute read

56. Merge Intervals

문제 링크

https://leetcode.com/problems/merge-intervals/description/

문제 설명

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.

제한 사항

  • 1 <= intervals.length <= 10^4
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 10^4

입출력 예 #1

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

입출력 예 #2

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

문제 풀이

배열을 정열한 이후 범위가 중복되는 항목은 합쳐서 저장한다.

문제 풀배열을 정열한 이후 범위가 중복되는 항목은 합쳐서 저장한다.풀이

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        merged = []
        for i in sorted(intervals, key=lambda x: x[0]):
            if merged and i[0] <= merged[-1][1]:
                merged[-1][1] = max(merged[-1][1], i[1])
            else :
                merged.append(i)
        return merged

Comments