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

    无重叠区间

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

    注意:

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

    输入: [ [1,2], [2,3], [3,4], [1,3] ]

    输出: 1

    解释: 移除 [1,3] 后,剩下的区间没有重叠。
    示例 2:

    输入: [ [1,2], [1,2], [1,2] ]

    输出: 2

    解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。
    示例 3:

    输入: [ [1,2], [2,3] ]

    输出: 0

    解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

    解题思路:先将数组按照左边界进行升序排序,再记录最小右边界,当某区间得左边界小于了维护的最小右边界时说明此时有区间重叠,要在两者之间选取一个较小的右区间来进行维护并删除两者中的一个区间

    class Solution {
        public int eraseOverlapIntervals(int[][] intervals) {
            int len = intervals.length;
            if(len == 0 || len == 1) {
                return 0;
            }
            
            Arrays.sort(intervals, (a, b) -> {
               return a[0] - b[0]; 
            });
            
            int ans = 0;
            int cur = intervals[0][1];
            
            for(int i = 1; i < len; i++) {
                int[] tmp = intervals[i];
                if(cur > tmp[0]) {
                    cur = Math.min(tmp[1], cur);
                    ans++;
                } else {
                    cur = tmp[1];
                }
            }
            
            return ans;
        }
    }
    
  • 相关阅读:
    1208PHP基础
    数据库的查询
    1108 函数
    Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例
    Windows下安装Zabbix agent
    Zabbix4.0如何监控Windows主机
    yum下载Zabbix4.0失败的解决方法
    TCP的三次握手与四次挥手理解
    MySQL主从复制原理
    Awk
  • 原文地址:https://www.cnblogs.com/katoMegumi/p/14215073.html
Copyright © 2011-2022 走看看