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