class Solution: def merge(self, intervals: List[Interval]) -> List[Interval]: # 区间值的边界 if not intervals: return [] max_val = max(interval.end for interval in intervals) # 找到最大值 # 使用数组记录每个值出现的次数 counts = [0] * (max_val * 2+4) for interval in intervals: counts[interval.start * 2] += 1 # 区间开始标记为 +1 counts[interval.end * 2 + 1] -= 1 # 区间结束标记为 -1 merged = [] start = None count = 0 for i in range(len(counts)): count += counts[i] if count > 0 and start is None: start = i // 2 elif count == 0 and start is not None: merged.append(Interval(start, i // 2)) start = None return merged