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
time, extra space.