732.我的日程安排表III
链接:732.我的日程安排表III
难度:Hard
标签:设计、线段树、二分查找、有序集合、前缀和
简介:实现 MyCalendar 类。
题解 1 - python
- 编辑时间:2025-01-04
- 执行用时:1596ms
- 内存消耗:17.97MB
- 编程语言:python
- 解法介绍:差分记录区间内已经订阅的课程数量
def has_intersection(a1: int, b1: int, a2: int, b2: int) -> int:
    return a1 < b2 and a2 < b1
class MyCalendarThree:
    def __init__(self):
        self.map = SortedDict()
    def book(self, startTime: int, endTime: int) -> int:
        self.map.setdefault(startTime, 0)
        self.map.setdefault(endTime, 0)
        self.map[startTime] += 1
        self.map[endTime] -= 1
        if self.map[endTime] == 0: self.map.pop(endTime)
        cnt = res = 0
        for v1, v2 in pairwise(self.map.items()):
            cnt += v1[1]
            res = max(res, cnt)
        return res