合并k个有序链表

合并k个长度为n的有序链表

方法一

依次合并k个链表,时间复杂度:O(k*k*n)

方法二

分治法

方法三

最小堆法

维护一个大小为k的最小堆,每次取对顶元素加入到结果链表后面,并将将元素的下一个点加入到最小堆中,当堆为空时返回结果。

* 注意:kava中使用PriorityQueue实现最小堆的功能,默认是最小堆,若要实现最大堆需重载compare方法,可使用匿名函数(o1,o2)->Integer.compare(o2,o1)*

  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • © 2020 Zhang-Ke
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信