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