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:
- 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.
Example 1:
|
|
Example 2:
|
|
Example 3:
|
|
思路
我们在使用C++ STL中的sort()函数时,如果vector中的元素是普通的int或者string,不需要额外撰写排序函数。sort()函数会自动将vector从小到大进行排列。如果vector里面的元素是自定义的struct/class,我们就需要重载排序函数。
利用贪心算法,将排序后的结果依次找寻局部最优即可。我们要注意在寻找的过程中,其中的一个边界条件。我们需要保证找到的元素,其范围是相对最小的。如[-100,-87], [-100, –32]……[-87, -20], [-86, -1], [-85, -72]……,很明显,当我们从[-100,-87]跳转到[-87, -20]时,我们取到的[-87, -20]是局部最优。但是当访问到[-85, -72]时,我们应该舍弃[-87, -20],将最优元素计为[-85, -72]。因为其所涉及的范围比[-87, -20]小。
因此有
|
|
这个条件判断。
|
|