1
# Runtime: 3035 ms (Top 7.53%) | Memory: 52.8 MB (Top 61.18%)5
def eraseOverlapIntervals(6
self, intervals: List[List[int]]7
) -> int: # Time: O(nlogn) and Space: O(1)10
prevEnd = intervals[0][1]12
for start, end in intervals[14
]: # we will start from 1 as we already had taken 0 as a base value17
): # Non overlapping when new interval starts after or from the previous one18
prevEnd = end # prev = [2, prevEnd=3] & new = [start=3, end=4], we have a new end now after checking the new non overlapping interval19
else: # Overlapping when new interval starts in between or from the previous one20
res += 1 # prev = [1, prevEnd=2] & new = [start=1, end=3] --> we will delete new=[1, 3] & set prev = [1, prevEnd=2]23
) # we will delete on the interval on the basis of whose interval ends last