0
点赞
收藏
分享

微信扫一扫

每日一题—— 无重叠区间

月白色的大狒 2022-03-30 阅读 35

无重叠区间:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
思路:先对数组按右边界进行排序,从最小的右边界开始与下一个的左边界进行比较,如果大于则i++,如果小于则交换边界,并且count++。

 public int eraseOverlapIntervals(int[][] intervals) {
        if(intervals.length == 0) return 0;
        Arrays.sort(intervals,new Comparator<int [] >(){
            public int compare(int [] a1,int [] a2) {
                return a1[1] - a2[1];   //升序排列
            }
        });
        int count = 1;
        int end = intervals[0][1];
        for (int i = 0; i < intervals.length; i++){
            if (end <= intervals[i][0]){
                end = intervals[i][1];
                count++;
            }
        }
        return intervals.length - count;
    }
举报

相关推荐

0 条评论