352. Data Stream as Disjoint Intervals
https://leetcode.com/problems/data-stream-as-disjoint-intervals/
addNum:
Use PriorityQueue to sort the order of all intervals first based on their interval.start
getIntervals:
merge intervals from smallest interval.start
import heapq
class SummaryRanges:
def __init__(self):
"""
Initialize your data structure here.
"""
self.intervals = []
self.seen = set()
def addNum(self, val: int) -> None:
if val not in self.seen:
heapq.heappush(self.intervals,[val,val])
self.seen.add(val)
def getIntervals(self) -> List[List[int]]:
stack = []
while self.intervals:
curr = heapq.heappop(self.intervals)
if not stack:
stack.append(curr)
else:
#merge
if curr[0] == stack[-1][1] + 1:
prev = stack.pop()
curr = [prev[0],curr[1]]
stack.append(curr)
else:
stack.append(curr)
self.intervals = stack
return self.intervals
Last updated
Was this helpful?