这边替左神宣传下【算法讲解027【必备】堆结构常见题】

你看你也会!

下面开始说思路:

设定每个线段都有l和r两个端点,

首先先给线段按l,升序排列;

(这边我使用java自带的Arrays.sort+自定义规则完成)

其次在for循环里的while循环里,从peek一下小根堆(这里面我们放r,但不是一股脑全放进去)得到一个r,看看这个r是否小于此时的l,如果是,则poll;否则什么也不干

(这里我使用java优先队列当堆)

直到堆空或没有r < l为止,我们再把这条线段的r,add进去,

最后,heap.size()和事先声明的ans取个较大者,在循环完毕后输出即可。