Merge Intervals - Implementation

Here is the implementation:

function merge(intervals):
    sort intervals by start
    result = [intervals[0]]

    for i from 1 to intervals.length - 1:
        last = result[result.length - 1]
        current = intervals[i]

        if current[0] <= last[1]:
            last[1] = max(last[1], current[1])
        else:
            result.append(current)

    return result

Sorting takes O(nlogn)O(n \log n). The merge pass is O(n)O(n). Total: O(nlogn)O(n \log n) time, O(n)O(n) space for output.