zoukankan      html  css  js  c++  java
  • 无重叠区间

    题目:

      给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

      注意:

        可以认为区间的终点总是大于它的起点。
        区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

    题解:贪心区间问题。先按边界排序,再比较后一个区间的起点是否前一个区间的终点重叠。代码如下:

    Java版本

       public int eraseOverlapIntervals(int[][] intervals) {
           if(intervals.length == 0) return 0;
            //按照右边界排序
            Arrays.sort(intervals,(a,b)-> { return a[1] -b[1];});      
            int end = intervals[0][1];
            int count = 0;
            for(int i=1;i<intervals.length;i++){
                if(intervals[i][0] < end) count++;//移除重叠的区间,end不变
                else end = intervals[i][1];
            }
            
            return count;
        }

    JS版本

    var eraseOverlapIntervals = function(intervals) {
        if(intervals.length == 0) return 0;
    
        //按照右边界排序
        intervals.sort(function(a,b){
            return a[1] - b[1];
        });
        
        let end = intervals[0][1];
        let count = 0;
        for(let i=1;i<intervals.length;i++){
            if(intervals[i][0] < end) count++;//移除重叠的区间,end不变
            else end = intervals[i][1];
        }
        
        return count;
            
    };

    总结:无重叠区间、用最少的箭射爆气球、最多可观看电影场数问题都是贪心区间问题,解题思路一样。先按照边界排序,再比较后一个区间的起点和前一个区间的终点的大小,即可判断出两个区间是否重叠。

  • 相关阅读:
    SpringMvc完成ajax功能
    接收的参数为日期类型
    Mybatis的逆向工程(generator)以及分页助手(pageHelper)
    springMVC静态资源的映射
    Mybatis框架
    写一个简单的SpringMvc的demo
    SpringMvc流程
    controller进行数据保存以及如何进行重定向跳转
    我爱C语言
    三列布局中有两列内容固定
  • 原文地址:https://www.cnblogs.com/bobobjh/p/14415855.html
Copyright © 2011-2022 走看看