LeetCode 435 Non-overlapping Intervals - Implementation

The approach

Sort by end time. Greedily keep non-overlapping intervals.

def eraseOverlapIntervals(intervals): intervals.sort(key=lambda x: x[1]) removed = 0 lastEnd = float('-inf')

for start, end in intervals:
    if start >= lastEnd:
        lastEnd = end
    else:
        removed += 1

return removed

O(nlogn)O(n \log n) time, O(1)O(1) extra space.