435. 无重叠区间

贪心

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {

        /**
         * 和《452. 用最少数量的箭引爆气球》一样
         * 对数组排序,按照从小到大的区间
         */
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });

        int count = 0;

        /**
         * 如果后一个区间和前一个区间重叠,count加1,更新这个区间的右边界,取最小值
         */
        for (int i = 1; i < intervals.length; i++) {

            if (intervals[i][0] < intervals[i - 1][1]){

                intervals[i][1] = Math.min(intervals[i][1], intervals[i - 1][1]);
                count++;
            }
        }

        return count;
    }
}

/**
 * 时间复杂度 O(nlogn)
 * 空间复杂度 O(1)
 */

https://leetcode-cn.com/problems/non-overlapping-intervals/

posted @ 2022-02-26 15:59  振袖秋枫问红叶  阅读(27)  评论(0)    收藏  举报