不重叠的区间个数
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:
- You may assume the interval's end point is always bigger than its start point.
- 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自然也不能再使用了,这样做的结果是使得剩余的情况“更糟糕”,其实就是贪心算法的运用。
思路理清之后,解题就是收到请来的 事情了。先将所有的区间按照右边界进行排序,然后依次遍历所有的区间,选出符合条件的 不重叠的区间,要移除的区间也就知道了。
代码就不贴了,很简单。这题主要是思路比较清奇,乍看还真的不容易想到!!