zoukankan      html  css  js  c++  java
  • 435. Non-overlapping Intervals

    Given a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.

    Note:

    1. You may assume the interval's end point is always bigger than its start point.
    2. Intervals like [1,2] and [2,3] have borders "touching" but they don't overlap each other.

    Example 1:

    Input: [ [1,2], [2,3], [3,4], [1,3] ]
    
    Output: 1
    
    Explanation: [1,3] can be removed and the rest of intervals are non-overlapping.
    

    Example 2:

    Input: [ [1,2], [1,2], [1,2] ]
    
    Output: 2
    
    Explanation: You need to remove two [1,2] to make the rest of intervals non-overlapping.
    

    Example 3:

    Input: [ [1,2], [2,3] ]
    
    Output: 0
    
    Explanation: You don't need to remove any of the intervals since they're already non-overlapping.

    此题是meeting room的一个变型题目,要求最少数量的重叠部分,那么就是相当于用贪心选择算法求出最多可容纳的interval的数量,然后来检验是否有和它重叠的,如果有重叠的部分,就coun++,思路和meeting room是一模一样的。代码如下:

    /**

     * Definition for an interval.

     * public class Interval {

     *     int start;

     *     int end;

     *     Interval() { start = 0; end = 0; }

     *     Interval(int s, int e) { start = s; end = e; }

     * }

     */

    public class Solution {

        public int eraseOverlapIntervals(Interval[] intervals) {

            if(intervals.length==0) return 0;

            Arrays.sort(intervals,new Comparator<Interval>(){

                public int compare(Interval a,Interval b){

                    if(a.end!=b.end){

                        return a.end-b.end;

                    }else{

                        return a.start-b.start;

                    }

                }

            });

            int end = intervals[0].end;

            int count = 0;

            for(int i=1;i<intervals.length;i++){

                if(intervals[i].start<end){

                    count++;   

                }else{

                    end = intervals[i].end;

                }

            }

            return count;

        }

    }

  • 相关阅读:
    I NEED A OFFER!
    水题 Codeforces Round #303 (Div. 2) A. Toy Cars
    模拟 HDOJ 5099 Comparison of Android versions
    模拟 HDOJ 5095 Linearization of the kernel functions in SVM
    贪心 HDOJ 5090 Game with Pearls
    Kruskal HDOJ 1863 畅通工程
    Kruskal HDOJ 1233 还是畅通工程
    并查集 HDOJ 1232 畅通工程
    DFS/并查集 Codeforces Round #286 (Div. 2) B
    水题 Codeforces Round #286 (Div. 2) A Mr. Kitayuta's Gift
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6363887.html
Copyright © 2011-2022 走看看