不重叠的区间个数

leetcode地址:

https://leetcode.com/problems/non-overlapping-intervals/description/

难度:中等

 

题目描述:

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.

翻译:

给定一组区间,求最少需要移除多少个区间,使得剩余的区间不重叠。

提示:

1. 给定的区间都是合法的,即右边界一定大于左边界

2. [1,2] and [2,3]这两个区间虽然有接触,但是不算重叠

 

解题思路:

说实话,这题,刚看到完全没有思路,所以直接看别人的解法,这里记录一下,加深印象。

题目要求最小删除的区间数目,实际上就是求能够组成不重叠区间的最大数目。

我们首先需要选出第一个区间,即最左边的区间,那么应该怎么选才能使剩下的区间不重叠数最大呢??答案是应该选择右边界最小的区间。因为只有这样剩余的区间才有更多的机会与左边的区间不重叠,假设右边界最小的区间是A,但是我们选择区间B作为第一个区间,那么A自然也不能再使用了,这样做的结果是使得剩余的情况“更糟糕”,其实就是贪心算法的运用。

 

思路理清之后,解题就是收到请来的 事情了。先将所有的区间按照右边界进行排序,然后依次遍历所有的区间,选出符合条件的 不重叠的区间,要移除的区间也就知道了。

代码就不贴了,很简单。这题主要是思路比较清奇,乍看还真的不容易想到!!

posted on 2019-05-19 18:03  _朱葛  阅读(752)  评论(0编辑  收藏  举报