435. 无重叠区间
分析
- 要保证最多的不重叠区间数,可以采用如下贪心策略:
- 按区间的结束点升序排序:结束点越早,剩余空间越多,更容易为后续区间预留空间
- 遍历排序后的区间,选择与前一个区间不重叠的区间,将其加入到保留的集合中
- 先按结束点排序。
- 初始化计数变量
count
,记录当前不wq重叠区间的数量,初始值为1
- 遍历排序后的区间:
- 如果当前区间的起始点
start
不小于上一个保留区间的结束点cur
,说明它与前面的区间不重叠,更新cur
并增加计数
- 如果当前区间的起始点
- 最后,用总区间数减去
count
即为需要移除的区间数
时间复杂度
- 排序的时间复杂度为
O(nlogn)
,其中n
是区间的数量 - 遍历区间的复杂度为
O(n)
总时间复杂度为 O(nlogn)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|