zoukankan      html  css  js  c++  java
  • 贪心策略---不重叠的区间个数

    不重叠的区间个数

    435. Non-overlapping Intervals (Medium)

    Input: [ [1,2], [1,2], [1,2] ]
    
    Output: 2
    
    Explanation: You need to remove two [1,2] to make the rest of intervals non-overlapping.
    Input: [ [1,2], [2,3] ]
    
    Output: 0
    
    Explanation: You don't need to remove any of the intervals since they're already non-overlapping.
    

    题目描述:

      计算让一组区间不重叠所需要移除的区间个数。

    思路分析:

      先计算最多能组成的不重叠区间个数,然后用区间总数减去不重叠区间的个数。在每次选择中,区间的结尾最为重要,选择的区间结尾越小,留给后面的区间的空间越大,那么后面能够选择的区间个数也就越大。按照区间结尾进行排序,每次选择结尾最小。

    代码:

    public int eraseOverlapIntervals(Interval[]intervals){
        if(intervals==null||intervals.length==0)
            return 0;
        Arrays.sort(intervals,new Comparator<Interval>(){
            @Override
            public int compare(Interval o1,Interval o2){
                return o1.end-o2.end;
            }
        });
        int res=1;
        int end=intervals[0].end;
        for(int i=1;i<intervals.length;i++){
            if(intervals[i].start<end){
                continue;
            }
            cnt++;
            end=intervals[i].end;
        }
        return intervals.length-cnt;
    }
    
  • 相关阅读:
    顺序栈用C语言实现
    对队列的操作和算法
    对链表的操作与算法
    对动态数组的操作与算法
    链表
    冒泡排序
    指针之动态分配内存
    字符串匹配KMP算法
    DS二叉树--层次遍历
    DS图--最小生成树
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11104905.html
Copyright © 2011-2022 走看看