435. 无重叠区间

//20220403
题目描述:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
题目链接:点我

解题思路:

  • 贪心,我们可以把区间想象成时间区段,每个时间区段有一个会议,我们需要在这么多时间区段里尽可能安排多的会议场数,这时我们就需要从会议结束的时间来找,让每个会议结束时间尽可能的早,为后面的会议留更多的时间,最终我们得到的就是最多会议的一个安排
  • 代码如下:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals,new Comparator<int[]>() {
                    @Override
                    public int compare(int[] o1, int[] o2) {
                        return o1[1]-o2[1];
                    }
                }
        );

        int right = intervals[0][1];
        int ans = 1;
        for(int i = 1;i<intervals.length;++i){
            if(intervals[i][0]>=right){
                ans++;
                right = intervals[i][1];
            }
        }
        return intervals.length-ans;
    }
}

这一题太经典了
希望对大家有所帮助
以上

posted @ 2022-04-03 11:48  醉生梦死_0423  阅读(24)  评论(0编辑  收藏  举报