File tree 1 file changed +25
-5
lines changed
1 file changed +25
-5
lines changed Original file line number Diff line number Diff line change 4
4
- intervals[i].length == 2
5
5
- 0 <= starti <= endi <= 10^4
6
6
7
- Time Complexity:
8
- -
7
+ Time Complexity: O(nlogn)
8
+ - 정렬에 nlogn, 순회에 n이 필요하므로 전체는 O(nlogn)
9
9
10
- Space Complexity:
11
- -
10
+ Space Complexity: O(n)
11
+ - 최악의 경우 모든 구간이 겹치지 않아 n개의 구간을 저장해야 함
12
12
13
13
풀이방법:
14
- 1.
14
+ 1. merged 배열을 intervals의 첫 번째 구간으로 초기화
15
+ 2. intervals의 두 번째 구간부터 순회하면서:
16
+ - 현재 구간의 시작점이 merged 배열의 마지막 구간의 끝점보다 작거나 같으면 병합
17
+ - 병합할 때는 끝점을 두 구간의 끝점 중 더 큰 값으로 설정
18
+ 3. 현재 구간이 merged의 마지막 구간과 겹치지 않으면 그대로 merged에 추가
19
+ 4. 2-3을 반복하여 모든 구간을 처리함
15
20
"""
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
You can’t perform that action at this time.
0 commit comments