


class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
cnt = 0
intervals.sort(key=lambda x: x[1])
last_end = intervals[0][1]
for start, end in intervals[1:]:
if start < last_end:
cnt += 1
else:
last_end = end
return cnt
Time:
(sorting dominates; the scan is linear)
Space:
(no extra space used apart from sorting)