Merge Intervals
LeetCode 56 · View on LeetCode
Sort intervals by start time. Walk through and either merge with the last interval (if overlapping) or append a new one.
def merge(intervals: list[list[int]]) -> list[list[int]]:
intervals.sort()
merged = [intervals[0]]
for start, end in intervals[1:]:
if start <= merged[-1][1]:
merged[-1][1] = max(merged[-1][1], end)
else:
merged.append([start, end])
return merged
if __name__ == '__main__':
print(merge([[1,3],[2,6],[8,10],[15,18]])) # [[1,6],[8,10],[15,18]]
print(merge([[1,4],[4,5]])) # [[1,5]]
print(merge([[1,4],[0,4]])) # [[0,4]]