zoukankan      html  css  js  c++  java
  • 删除重叠的区间的个数

    删除重叠的区间的个数

    package my;
    
    import java.util.Arrays;
    
    public class NoOverlapIntervals2 {
        int eraseOverlapIntervals(int[][] intervals){
            if(intervals.length == 0){
                return  0;
            }
            //将所有区间按照起始时间排序
            Arrays.sort(intervals ,(v1,v2) -> v1[0] -v2[0]);
            //用一个变量end 记录前期的最小结束时间点,
            //以及一个count 变量记录到目前为止删除掉了多少区间
            int end = intervals[0][1], count =0;
            //从第二个区间开始,判断一下当前区间和前一个区间的结束时间
            for (int i = 1 ;i < intervals.length; i++){
                //当前区间和前一个区间有重叠,即当前区间的起始时间小于上一个区间的结束时间, end 记录下两个结束时间的最小值
                //把结束时间玩的区间删除,计数器加1.
                if(intervals[i][0] < end){
                    end = Math.min(end , intervals[i][1]);
                    count++;
                }else{
                    end = intervals[i][1];
                }
            }
            //如果没有发生重叠,根据贪婪法,更新end 变量为当前区间的结束时间
            return count ;
        }
        public static void main(String[] args){
            int[][] inte= {{1,4},{2,5},{4,9},{7,10},{11,45},{1,2}};
            NoOverlapIntervals2 noi = new NoOverlapIntervals2();
            int n = noi.eraseOverlapIntervals(inte);
            System.out.println(n);
        }
    }
    //在给定区间中,最多有多少个区间相互之间是没有重叠的?
    package my;
    
    import java.util.Arrays;
    
    //在给定区间中,最多有多少个区间相互之间是没有重叠的?
    public class NoOverlapIntervals3 {
        int eraseOverlapIntervals(int[][] intervals){
            if(intervals.length == 0){
                return 0;
            }
            //按照结束时间将所有区间进行排序
            Arrays.sort(intervals ,(v1,v2) -> v1[1] -v2[1]);
            //定义一个变量end 用来记录当前的结束时间;
            //count变量用来记录有多少个没有重叠的区间;
            int end = intervals[0][1] ,count = 1;
            //从第二个区间开始遍历剩下的区间
            for(int i= 1 ;i < intervals.length ; i++){
                //当前区间和前一个结束时间没有重叠,那么计数器加1,同时更新一下新的结束时间
                if(intervals[i][0]  >= end){
                    end = intervals[i][1];
                    count ++;
                }
            }
            //用总区间的个数减去没有重叠的区间个数,即为最少要删除掉的区间个数
            return intervals.length - count;
        }
        public static void main(String[] args){
            int[][] inte= {{1,4},{2,5},{4,9},{7,10},{11,45},{1,2}};
            NoOverlapIntervals3 noi = new NoOverlapIntervals3();
            int n = noi.eraseOverlapIntervals(inte);
            System.out.println(n);
        }
    }
  • 相关阅读:
    Cookie的总结
    动态改变静态资源路径
    使用JS监听DOM元素的属性及动画、CSS过渡
    localStorage和sessionStorage使用及监听
    难理解的点---值方法和指针方法 + 接口赋值
    js关于精确判断数据类型的总结
    ivew版本4.5.0后ivu-row样式变更,导致布局错乱
    简述三种异步上传文件方式
    自然周算法-javascript实现
    时隔3年9个月,再看
  • 原文地址:https://www.cnblogs.com/goodtest2018/p/13636743.html
Copyright © 2011-2022 走看看