non_overlapping_intervals

 1from math import inf
 2
 3
 4# @leet start
 5class Solution:
 6    def eraseOverlapIntervals(self, intervals: list[list[int]]) -> int:
 7        intervals.sort(key=lambda x: x[1])
 8        res = 0
 9        curr_end = -inf
10        for start, end in intervals:
11            if start >= curr_end:
12                curr_end = end
13            else:
14                res += 1
15        return res
16
17
18# @leet end
19sol = Solution()
20
21
22def test():
23    assert sol.eraseOverlapIntervals([[1, 2], [2, 3]]) == 0
24    assert sol.eraseOverlapIntervals([[1, 2], [2, 3], [3, 4], [1, 3]]) == 1
25    assert sol.eraseOverlapIntervals([[1, 100], [11, 22], [1, 11], [2, 12]]) == 2
class Solution:
 6class Solution:
 7    def eraseOverlapIntervals(self, intervals: list[list[int]]) -> int:
 8        intervals.sort(key=lambda x: x[1])
 9        res = 0
10        curr_end = -inf
11        for start, end in intervals:
12            if start >= curr_end:
13                curr_end = end
14            else:
15                res += 1
16        return res
def eraseOverlapIntervals(self, intervals: list[list[int]]) -> int:
 7    def eraseOverlapIntervals(self, intervals: list[list[int]]) -> int:
 8        intervals.sort(key=lambda x: x[1])
 9        res = 0
10        curr_end = -inf
11        for start, end in intervals:
12            if start >= curr_end:
13                curr_end = end
14            else:
15                res += 1
16        return res
sol = <Solution object>
def test():
23def test():
24    assert sol.eraseOverlapIntervals([[1, 2], [2, 3]]) == 0
25    assert sol.eraseOverlapIntervals([[1, 2], [2, 3], [3, 4], [1, 3]]) == 1
26    assert sol.eraseOverlapIntervals([[1, 100], [11, 22], [1, 11], [2, 12]]) == 2