leetcode 435.无重叠区间(java 贪心)

d先根据各区间尾节点进行从小到大排序,然后依次判断下一个区间的开始节点是否大于上一个区间的结束节点,若大于,可留住,若是小于,则发生重叠,删去。这样就能保证尾节点小的留住,为后面的区间腾出更多的地方,从而使保留的区间尽可能多。

 

**有一处不懂,

Arrays.sort(intervals,Comparator.comparingInt(o -> o[1]));

 

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        if(intervals.length==0)
            return 0;
        Arrays.sort(intervals,Comparator.comparingInt(o -> o[1]));       //???
        int ans=1;
        int end=intervals[0][1];
        for(int i=1;i<intervals.length;i++){
            if(intervals[i][0]<end){
                continue;
            }
            end=intervals[i][1];
            ans++;
        }
        return intervals.length-ans;
    }
}

 

posted @ 2019-09-07 21:09  星辰大海。  阅读(423)  评论(0编辑  收藏  举报