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]]
© 2026 ByteLearn.dev. Free courses for developers. · Privacy