435. 不相交区间:贪心算法
发布时间
阅读量:
阅读量
无重叠区间问题解析
题目描述:
在多个区间集合中,确定需要删除的最少区间数量,以确保所有区间之间不存在重叠现象。相邻的起止点不视为重叠。
注意:
可假设每个区间的终点值始终大于其起点值。
对于区间 [1,2] 与 [2,3] 而言,它们的端点仅处于接触状态,并未形成实际的重叠(交叉)关系。
示例 1:
> **输入:****输出:****解释:**
解析:
1、在确定需要保留的区间时,区间的终点具有关键作用:所选区间的终点越小,留给其他区间的可用空间就越大,从而可以保留更多的区间。因此,我们采取的贪心策略是:优先选择终点较小且互不重叠的区间。
2、具体实施方式为:首先将所有区间按照终点大小进行升序排列。然后依次选取终点最小且与前一个已选区间无重叠部分的区间。排序过程可以通过std :: sort函数结合自定义的排序规则来实现。
3、在示例中,排序后的数组为[ [1,2], [2,3], [1,3], [2,4]]。根据所采用的贪心策略,初始选择的区间为[1,2];由于[1,2]与[2,3]之间没有重叠部分,因此将其保留;而[2,3]与[1,3]存在交集,故跳过该区间;同样地,在后续步骤中保留[2,4]。
bool cmp(vector<int> &a, vect
全部评论 (0)
还没有任何评论哟~
