贪心算法:区间问题
只是记录自己的刷题过程,答案参考过多种题解。
如有错误感谢指正!
参考:LeetCode 101: A LeetCode Grinding Guide (C++ Version) 作者:高畅 Chang Gao
435.无重叠区间 (Medium)
给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。
A. 贪心思想
-
选择的区间 结尾越小 ,余留给其它区间的空间就越大,就越能保留更多的区间。
-
局部最优体现在,优先选右边界小的区间,所以从左向右遍历,留给下一个区间的空间就大一些。
-
全局最优体现在,选取最多的非交叉区间,即最少的移除区间。
B. 具体实现
-
按照右边界 从小到大 进行排序。
-
按照右边界升序排序,就要 从左向右遍历 。因为右边界越小越好,只要右边界越小,留给下一个区间的空间就越大,所以从左向右遍历,优先选右边界小的。(也可按