Data Stream as Disjoint Intervals LeetCode solution in Python

1
class SummaryRanges:
2
def __init__(self):
3
self.intervals = []
4

5
def addNum(self, val: int) -> None:
6
left, right = 0, len(self.intervals) - 1
7
while left <= right:
8
mid = (left + right) // 2
9
e = self.intervals[mid]
10
if e[0] <= val <= e[1]:
11
return
12
elif val < e[0]:
13
right = mid - 1
14
else:
15
left = mid + 1
16
pos = left
17
self.intervals.insert(pos, [val, val])
18
if pos + 1 < len(self.intervals) and val + 1 == self.intervals[pos + 1][0]:
19
self.intervals[pos][1] = self.intervals[pos + 1][1]
20
del self.intervals[pos + 1]
21
if pos - 1 >= 0 and val - 1 == self.intervals[pos - 1][1]:
22
self.intervals[pos - 1][1] = self.intervals[pos][1]
23
del self.intervals[pos]
24

25
def getIntervals(self) -> List[List[int]]:
26
return self.intervals

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0