LeetCode 435. 无重叠区间

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 

示例 1:

输入: intervals = [[1,2],[2,3],[3,4],[1,3]]
输出: 1
解释: 移除 [1,3] 后,剩下的区间没有重叠。

示例 2:

输入: intervals = [ [1,2], [1,2], [1,2] ]
输出: 2
解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

示例 3:

输入: intervals = [ [1,2], [2,3] ]
输出: 0
解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

提示:

  • 1 <= intervals.length <= 10^5
  • intervals[i].length == 2
  • -5 * 10^4 <= starti < endi <= 5 * 10^4

思路:

本题可以先统计无重叠的区间的数量,再用总的区间数量减去统计的无重叠的区间数量,得到的即为需要删去的最小的区间数量。在统计无重叠的区间的数量 count 时,可以先对 intervals 数组按照 start 进行升序排序,然后比较当前区间的 end 和前一个区间的 start,如果当前区间的 end < 前一个区间的 start,则说明这两个区间是重合的,则更新 这两个已重合区间 的最小的右边界值,如果下一个区间的 start < 这个最小的右边界值,则说明这三个区间都重合,否则说明这个区间与前两个区间不重合,无重叠的区间的数量 count 加1,以此类推。

代码:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        //按照 start 升序排列
        //统计不重叠的区间的数量 count,然后用总的数量减去 count就是要删除的最小的区间数量
        Arrays.sort(intervals,(o1,o2)->{
            if(o1[0]!=o2[0]) return Integer.compare(o1[0],o2[0]);
            return Integer.compare(o1[1],o2[1]);
        });
        // intervals 不为1,则至少有一个区间不重叠
        int count = 1;
        for(int i=1;i<intervals.length;i++){
            if(intervals[i][0]<intervals[i-1][1]){//此时说明区间 i 和区间 i-1 重合
                //更新 intervals[i][1]为已重合的区间的最小值
                intervals[i][1] = Math.min(intervals[i][1],intervals[i-1][1]);
                continue;
            }
            else{
                count++;
            }
        }
        return intervals.length-count;
    }
}

参考:代码随想录

相关推荐

  1. LeetCode-435重叠区间(贪心)

    2024-03-31 09:12:05       60 阅读
  2. 435. 重叠区间

    2024-03-31 09:12:05       42 阅读
  3. 力扣:435. 重叠区间(贪心)

    2024-03-31 09:12:05       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 09:12:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 09:12:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 09:12:05       82 阅读
  4. Python语言-面向对象

    2024-03-31 09:12:05       91 阅读

热门阅读

  1. pytorch 层和块

    2024-03-31 09:12:05       43 阅读
  2. wpf中引用自定义字体

    2024-03-31 09:12:05       37 阅读
  3. 大模型微调-数据部分

    2024-03-31 09:12:05       43 阅读
  4. 5 倍经验日

    2024-03-31 09:12:05       32 阅读
  5. Python:静态方法

    2024-03-31 09:12:05       41 阅读
  6. 5.91 BCC工具之tcpcong.py解读

    2024-03-31 09:12:05       40 阅读
  7. #!/bin/sh和#!/bin/bash的区别

    2024-03-31 09:12:05       38 阅读
  8. 【使用python读取多类型文件夹中的文档内容】

    2024-03-31 09:12:05       39 阅读
  9. pytest中文使用文档----9集成文档测试

    2024-03-31 09:12:05       46 阅读
  10. Linux|如何管理多个Git身份

    2024-03-31 09:12:05       37 阅读
  11. wifi密码,pc端

    2024-03-31 09:12:05       36 阅读