无标题文章

题目

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

思路

将数组中的k个有序链表归并成一个有序链表,并分析时间复杂度。该题可以在第22题-"merge two sorted lists"的基础上设计算法。
一开始想到遍历数组的k-1个链表,将第一个链表与第二个链表合并成一个新链表,然后第三个链表再跟这个新链表合并成新链表,以此类推......假设链表长度最长为n,则这样设计出来的算法时间复杂度为O(nk),提交报超时错误。
改变思路,不要用单一遍历方式。可以递归归并数组中的k个链表,将其分割成k/2大小的数组归并,然后再分成k/2^2大小的数组归并......这样递归归并的时间复杂度为O(logk),总时间复杂度为O(n
logk)

代码

Python
Java
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容