合并区间
合并区间顾名思义,就是有两个区间a, b。区间a的范围是[1, 5],区间b的范围是[2, 7],那么将a和b合并之后的区间就是[1, 7]。
题目:现给出n个区间,求这n个区间合并后最终成为几个区间。
步骤:
将n个pair排序。
维护一个现有的区间,比较下一个区间能否合并进来,如果能合并进来就更新区间范围,如果合并不进来就将维护的区间保存起来,新区间成为要维护的区间。
怎么算是能合并进来?
情况1:
|__________|
|___________|
情况2:
|——————————|
|—————|
综合情况12:维护的区间的右端点 r = max(r, 新区间右端点)
由于区间先前经过排序,所以不可能出现这种情况:
|_________|
|_______|
怎么算是合并不进来?
|__________|
|________|
此时维护的区间要更新为下边这个,原来的区间已经算是合并完了,可以扔到某个数据结构中保存起来。最后统计一下某个数据结构中有几个区间就可以了。