题解 | #线段重合#
线段重合
https://www.nowcoder.com/practice/1ae8d0b6bb4e4bcdbf64ec491f63fc37
这边替左神宣传下【算法讲解027【必备】堆结构常见题】
你看你也会!
下面开始说思路:
设定每个线段都有l和r两个端点,
首先先给线段按l,升序排列;
(这边我使用java自带的Arrays.sort+自定义规则完成)
其次在for循环里的while循环里,从peek一下小根堆(这里面我们放r,但不是一股脑全放进去)得到一个r,看看这个r是否小于此时的l,如果是,则poll;否则什么也不干
(这里我使用java优先队列当堆)
直到堆空或没有r < l为止,我们再把这条线段的r,add进去,
最后,heap.size()和事先声明的ans取个较大者,在循环完毕后输出即可。