非独立思考

    1. class Solution {
    2. public int eraseOverlapIntervals(int[][] intervals) {
    3. // 首先按照左边的值排序
    4. Arrays.sort(intervals, Comparator.comparingInt(arr -> arr[0]));
    5. // 保留最多区间,就好比参与更多活动,能够影响的主要是上一个活动的结束时间
    6. // 这里我们也需要关注右区间,右区间越小越好
    7. int ans = 0;
    8. // 表示已经已经添加到其中的end
    9. int end = intervals[0][1];
    10. for (int i = 1; i < intervals.length; i++) {
    11. if (intervals[i][0] < end) {
    12. // 发生重叠,首先需要删除的区间+1
    13. // 其次,因为已经是按照左边排序,我们选择右区间选择较小的那个
    14. // 因为反正都需要删掉一个,选择右区间较小的,右边相当于有更大的空间可以容纳更多的值
    15. // 也就“拥有保留更多区间的能力”
    16. ++ans;
    17. end = Math.min(end, intervals[i][1]);
    18. } else {
    19. // 将end更新
    20. end = intervals[i][1];
    21. }
    22. }
    23. return ans;
    24. }
    25. }