[코테] 리트코드 정렬 56. Merge Intervals
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
- 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] overlap, merge them into [1,6].
입출력 예 #2
- Input : intervals = [[1,4],[4,5]]
- Output : [[1,5]]
- 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