715. Range Module
https://leetcode.com/problems/range-module/
import heapq
class RangeModule:
def __init__(self):
self.intervals = []
def addRange(self, left: int, right: int) -> None:
heapq.heappush(self.intervals,[left,right])
#merge
stack = []
while self.intervals:
curr = heapq.heappop(self.intervals)
if not stack:
stack.append(curr)
else:
if stack[-1][1] >= curr[0]:
prev = stack.pop()
stack.append([prev[0],max(prev[1],curr[1])])
else:
stack.append(curr)
self.intervals = stack
# print("add interval")
# print(self.intervals)
def queryRange(self, left: int, right: int) -> bool:
# print("Query")
# print("{} {}".format(left,right))
# print(self.intervals)
for interval in self.intervals:
if left >= interval[0] and interval[1] >= right:
return True
return False
def removeRange(self, left: int, right: int) -> None:
arr = []
for interval in self.intervals:
if interval[1] <= left or interval[0] >= right:
arr.append(interval)
else:
if interval[0] < left and right < interval[1]:
arr.append([interval[0],left])
arr.append([right,interval[1]])
elif interval[1] > left and right>= interval[1]:
arr.append([interval[0],left])
elif left <= interval[0] and interval[0] < right:
arr.append([right,interval[1]])
self.intervals = arr
# print("Remove interval")
# print(self.intervals)Last updated