Skip to content

Commit 192433f

Browse files
committed
merge-intervals solution (py)
1 parent 1abcdb6 commit 192433f

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

merge-intervals/hi-rachel.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
https://leetcode.com/problems/merge-intervals/description/
3+
4+
문제 설명:
5+
- 주어진 구간(interval) 리스트에서 겹치는 구간들을 병합(merge)하여 반환합니다.
6+
- 각 구간은 [start, end] 형태입니다.
7+
- 결과는 겹치는 구간이 없는 리스트여야 하며, 정렬된 순서로 반환합니다.
8+
9+
TC: O(N log N)
10+
- intervals를 정렬하는 데 O(N log N)
11+
- 한 번의 반복으로 병합 처리 → O(N)
12+
13+
SC: O(N)
14+
- 결과 리스트(output)에 최대 N개의 구간이 저장될 수 있음
15+
"""
16+
17+
from typing import List
18+
19+
class Solution:
20+
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
21+
output = []
22+
for interval in sorted(intervals):
23+
# output이 비어있거나, 현재 interval이 이전 interval과 겹치지 않으면 그대로 추가
24+
if not output or output[-1][1] < interval[0]:
25+
output.append(interval)
26+
else:
27+
# 겹치는 경우: 끝나는 부분을 더 긴 쪽으로 병합
28+
output[-1][1] = max(output[-1][1], interval[1])
29+
30+
return output

0 commit comments

Comments
 (0)