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