File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments