- Published on
leetcode-352 Data Stream as Disjoint Intervals
- Authors

- Name
- Gene Zhang
[352] Data Stream as Disjoint Intervals
Key Concept: TreeMap/Ordered Dict for Interval Management - Maintain sorted intervals and merge adjacent ones when adding new numbers.
# Design a data structure that accepts a stream of integers and retrieves
# the current list of disjoint intervals.
from sortedcontainers import SortedDict
class SummaryRanges:
def __init__(self):
self.intervals = SortedDict()
def addNum(self, value: int) -> None:
if value in self.intervals:
return
left = self.intervals.get(value - 1)
right = self.intervals.get(value + 1)
if left and right:
# Merge three intervals
self.intervals[left] = right
del self.intervals[value + 1]
elif left:
# Extend left interval
self.intervals[left] = value
elif right:
# Extend right interval
self.intervals[value] = right
del self.intervals[value + 1]
else:
# New interval
self.intervals[value] = value
def getIntervals(self) -> List[List[int]]:
return [[start, end] for start, end in self.intervals.items()]
# Time: addNum O(log n), getIntervals O(n); Space: O(n)
# AirBnB: Tests interval management and data structure design