Skip to content

Commit b474b7d

Browse files
committed
solve(w13): 57. Insert Interval
1 parent d12d8ee commit b474b7d

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

insert-interval/seungriyou.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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

0 commit comments

Comments
 (0)