File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/insert-interval/
2
+
3
+ from typing import List
4
+
5
+ class Solution :
6
+ def insert (self , intervals : List [List [int ]], newInterval : List [int ]) -> List [List [int ]]:
7
+ """
8
+ [Complexity]
9
+ - TC: O(n)
10
+ - SC: O(n)
11
+
12
+ [Approach]
13
+ intervals의 각 interval에 대해 다음의 케이스로 나눠볼 수 있다.
14
+ 1) left에 해당하는 interval: left에 추가
15
+ 2) right에 해당하는 interval: right에 추가
16
+ 3) newInterval과 겹치는 interval: ns & ne 업데이트 (newInterval 확장)
17
+ """
18
+ ns , ne = newInterval
19
+
20
+ # left: end < ns
21
+ # right: start > ne
22
+ left , right = [], []
23
+
24
+ for s , e in intervals :
25
+ # 1) left에 해당하는 interval이라면, left에 추가
26
+ if e < ns :
27
+ left .append ([s , e ])
28
+
29
+ # 2) right에 해당하는 interval이라면, right에 추가
30
+ elif s > ne :
31
+ right .append ([s , e ])
32
+
33
+ # 3) newInterval과 겹치는 interval이라면, ns & ne 업데이트
34
+ else :
35
+ ns = min (ns , s )
36
+ ne = max (ne , e )
37
+
38
+ # left.append([ns, ne])
39
+ # left.extend(right)
40
+ # return left
41
+ return left + [[ns , ne ]] + right
You can’t perform that action at this time.
0 commit comments