Skip to content

Commit c3cc294

Browse files
committed
Day13
1 parent 380e244 commit c3cc294

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

leetcode3/최민지/352.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from bisect import bisect_left
2+
from typing import List
3+
4+
5+
class SummaryRanges:
6+
7+
def __init__(self):
8+
self.intervals = []
9+
10+
11+
def addNum(self, value: int) -> None:
12+
idx = bisect_left(self.intervals, [value, value])
13+
14+
15+
# 이미 포함되어 있는 경우
16+
if idx > 0 and self.intervals[idx - 1][0] <= value <= self.intervals[idx - 1][1]:
17+
return
18+
19+
20+
# 왼쪽 구간과 연결되는 경우
21+
if idx > 0 and self.intervals[idx - 1][1] + 1 == value:
22+
self.intervals[idx - 1][1] = value
23+
24+
# 왼쪽과 확장 후 오른쪽과도 연결되는 경우
25+
if idx < len(self.intervals) and self.intervals[idx][0] == value + 1:
26+
self.intervals[idx - 1][1] = self.intervals[idx][1]
27+
self.intervals.pop(idx)
28+
29+
return
30+
31+
32+
# 오른쪽 구간과 연결되는 경우
33+
if idx < len(self.intervals) and self.intervals[idx][0] - 1 == value:
34+
self.intervals[idx][0] = value
35+
return
36+
37+
38+
# 새로운 구간 추가
39+
self.intervals.insert(idx, [value, value])
40+
41+
42+
def getIntervals(self) -> List[List[int]]:
43+
return self.intervals

0 commit comments

Comments
 (0)