Data Stream as Disjoint Intervals
[1, 1]
[1, 1], [3, 3]
[1, 1], [3, 3], [7, 7]
[1, 3], [7, 7]
[1, 3], [6, 7]class SummaryRanges:
def __init__(self):
"""
Initialize your data structure here.
"""
self.q = []
def addNum(self, val: int) -> None:
heapq.heappush(self.q, (val,[val,val]))
def getIntervals(self) -> List[List[int]]:
stack = []
while self.q:
idx,cur = heapq.heappop(self.q)
if not stack:
stack.append((idx,cur))
else:
_,pre = stack[-1]
if cur[0] <= pre[1]+1:
pre[1] = max(pre[1],cur[1])
else:
stack.append((idx,cur))
self.q = stack
return list(map(lambda x: x[1], self.q))
# Your SummaryRanges object will be instantiated and called as such:
# obj = SummaryRanges()
# obj.addNum(val)
# param_2 = obj.getIntervals()Last updated