合并区间

合并区间顾名思义,就是有两个区间a, b。区间a的范围是[1, 5],区间b的范围是[2, 7],那么将a和b合并之后的区间就是[1, 7]。

题目:现给出n个区间,求这n个区间合并后最终成为几个区间。

步骤:

将n个pair排序。
维护一个现有的区间,比较下一个区间能否合并进来,如果能合并进来就更新区间范围,如果合并不进来就将维护的区间保存起来,新区间成为要维护的区间。
怎么算是能合并进来?

情况1:

|__________|
   |___________|

情况2:

|——————————|
   |—————|

综合情况12:维护的区间的右端点 r = max(r, 新区间右端点)

由于区间先前经过排序,所以不可能出现这种情况:

    |_________|
|_______|

怎么算是合并不进来?

|__________|
             |________|

此时维护的区间要更新为下边这个,原来的区间已经算是合并完了,可以扔到某个数据结构中保存起来。最后统计一下某个数据结构中有几个区间就可以了。

posted @ 2021-11-19 18:07  moon_orange  阅读(148)  评论(0编辑  收藏  举报