zoukankan      html  css  js  c++  java
  • 【LeetCode】435-无重叠区间

    题目描述

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

    注意:

    1. 可以认为区间的终点总是大于它的起点。
    2. 区间 [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
    
    解释: 你不需要移除任何区间,因为它们已经是无重叠的了。
    

    解题思路

    贪心思想:

    先找到个数最多的一系列不重叠区间,用总区间个数减去不重叠区间的个数,就是需要移除的区间个数。

    需要先对每个区间排序,排序的依据是区间的结尾的大小,因为区间结尾越小,后面就越能安排多的区间。

    public int eraseOverlapIntervals (Interval[] intervals) {
        if (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 count = 1;
        int end = intervals[0].end;
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i].start<end) continue;
            end = intervals[i].end;
            count++;
        }
    
        return intervals.length - count;
    }
    
  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/yuzhenzero/p/10713240.html
Copyright © 2011-2022 走看看