python函数,传递进来的参数可能会被改变,需要deepcopy保证改变的是复制后的参数
初始代码
def merge_intervals(_intervals):
"""
Merge overlapping intervals.
Args:
_intervals: list of [start, end]
Returns:
list of merged non-overlapping intervals
"""
if not _intervals:
return []
# 按 start 排序
intervals = sorted(_intervals, key=lambda x: x[0])
merged = [intervals[0]]
for current in intervals[1:]:
last = merged[-1]
if current[0] <= last[1]:
# overlap: merge
last[1] = max(last[1], current[1])
else:
merged.append(current)
return merged
修改后的
def merge_intervals(_intervals):
"""
intervals: list of [start, end]
Returns merged non-overlapping list of intervals.
"""
if not _intervals:
return []
# sort by start
intervals = copy.deepcopy(_intervals)
intervals.sort()
merged = [intervals[0]]
for current in intervals[1:]:
last = merged[-1]
if current[0] <= last[1]:
# overlap: merge
last[1] = max(last[1], current[1])
else:
merged.append(current)
return merged