352. 将数据流变为多个不相交区间

352. 将数据流变为多个不相交区间

本题是一道类似于区间合并的题目。
加入 val 分五种情况:

  1. 已经加过
  2. 孤点
  3. 正好可连着左侧
  4. 正好可连着右侧
  5. 正好是左右区间之间唯一的一个,即连接左右。
class SummaryRanges:

    def __init__(self):
        self.x = []
        

    def addNum(self, val: int) -> None:
        if val not in self.x:            
            bisect.insort(self.x, val)

    def getIntervals(self) -> List[List[int]]:
        ans = []

        head = tail = -1
        for i in self.x + [-1]: # 末尾添加哨兵
            if head == -1:
                head = tail = i  # 处理开头,固定左边,扩展右边。
            elif tail + 1 == i:
                tail = i
            else:
                ans.append([head, tail])
                head = tail = i  # 开辟新区间 
                      
        # ans.append([head, tail]) # 添加哨兵后不需要了
        return ans

# Your SummaryRanges object will be instantiated and called as such:
# obj = SummaryRanges()
# obj.addNum(val)
# param_2 = obj.getIntervals()
上一篇:LeetCode 941 有效的山脉数组 题解


下一篇:Nginx常用基本命令