zoukankan      html  css  js  c++  java
  • 0435. Non-overlapping Intervals (M)

    Non-overlapping Intervals (M)

    题目

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

    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.
    

    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.

    题意

    给定一组区间,要求删去最少的区间,使剩余的区间互不重叠。

    思路

    贪心,类似于规划区间使不重叠的区间最多。先将区间按照左端点升序排序,再依次遍历,如果有两两重叠,则删去右端点较大的那个区间。


    代码实现

    Java

    class Solution {
        public int eraseOverlapIntervals(int[][] intervals) {
            Arrays.sort(intervals, (int[] a, int[] b) -> a[0] - b[0]);
            int count = 0;
            int i = 0;
            for (int j = 1; j < intervals.length; j++) {
                if (intervals[i][1] > intervals[j][0]) {
                    count++;
                    i = intervals[i][1] >= intervals[j][1] ? j : i;
                } else {
                    i = j;
                }
            }
            return count;
        }
    }
    
  • 相关阅读:
    10.16 NOIP模拟赛
    10.14 牛客提高集训营5
    10.12 正睿普及4
    Codeforces Round #516 (Div. 2) (A~E)
    hihoCoder.1509.异或排序(位运算 思路)
    hihoCoder.1513.小Hi的烦恼(bitset 五维偏序)
    hihoCoder挑战赛19 A.Rikka with Sequence(状压DP)
    BZOJ.3668.[NOI2014]起床困难综合症(贪心)
    BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
    BZOJ.3329.Xorequ(数位DP)
  • 原文地址:https://www.cnblogs.com/mapoos/p/13296911.html
Copyright © 2011-2022 走看看