Skip to content

Commit b49ce60

Browse files
committed
solve: merge intervals
1 parent 5a411b0 commit b49ce60

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

merge-intervals/KwonNayeon.py

+25-5
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,32 @@
44
- intervals[i].length == 2
55
- 0 <= starti <= endi <= 10^4
66
7-
Time Complexity:
8-
-
7+
Time Complexity: O(nlogn)
8+
- 정렬에 nlogn, 순회에 n이 필요하므로 전체는 O(nlogn)
99
10-
Space Complexity:
11-
-
10+
Space Complexity: O(n)
11+
- 최악의 경우 모든 구간이 겹치지 않아 n개의 구간을 저장해야 함
1212
1313
풀이방법:
14-
1.
14+
1. merged 배열을 intervals의 첫 번째 구간으로 초기화
15+
2. intervals의 두 번째 구간부터 순회하면서:
16+
- 현재 구간의 시작점이 merged 배열의 마지막 구간의 끝점보다 작거나 같으면 병합
17+
- 병합할 때는 끝점을 두 구간의 끝점 중 더 큰 값으로 설정
18+
3. 현재 구간이 merged의 마지막 구간과 겹치지 않으면 그대로 merged에 추가
19+
4. 2-3을 반복하여 모든 구간을 처리함
1520
"""
21+
class Solution:
22+
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
23+
if not intervals:
24+
return []
25+
26+
merged = [intervals[0]]
27+
28+
for interval in intervals[1:]:
29+
if interval[0] <= merged[-1][1]:
30+
merged[-1][1] = max(merged[-1][1], interval[1])
31+
32+
else:
33+
merged.append(interval)
34+
35+
return merged

0 commit comments

Comments
 (0)