|
| 1 | +# non-overlapping intervals | leetcode 435 | https://leetcode.com/problems/non-overlapping-intervals |
| 2 | +# sort by starting times; keep track of latest ending time; always keep interval with min end time |
| 3 | + |
| 4 | +class Solution: |
| 5 | + def eraseOverlapIntervals(self, intervals: list[list[int]]) -> int: |
| 6 | + min_intervals_to_remove = 0 |
| 7 | + intervals.sort(key = lambda x: x[0]) |
| 8 | + latest_end = intervals[0][1] |
| 9 | + |
| 10 | + for i in range(1, len(intervals)): |
| 11 | + if intervals[i][0] < latest_end: |
| 12 | + min_intervals_to_remove += 1 |
| 13 | + latest_end = min(intervals[i][1], latest_end) |
| 14 | + else: |
| 15 | + latest_end = intervals[i][1] |
| 16 | + |
| 17 | + return min_intervals_to_remove |
0 commit comments