归并多组有序的链表
刚刚在LeetCode上刷了一道题目,显示是hard级别的,但是自己居然编译痛过之后一遍就AC了,想想挺开心的,就写篇博客分析一下这道题目,并且分析这道题目的时间复杂度等
先看题目:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
以下是C++的实现入口:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
}
}
题目中给定一个容器,里面存储的是每一个链表的第一个节点,所以我们首先需要获得所有的开始节点,然后两两归并。我的思路是将第一个链表作为head,以后开始顺序遍历容器,每一次取出容器内的一个链表,将它和之前已经合并了的链表合并,直至容器为空,然后返回head就好了。
值得一提的是在我第一遍提交的时候出现了一个报错:reference binding to null pointer of type ‘st

本文介绍了一种解决LeetCode中难度为hard的题目——合并k个有序链表的方法。作者通过C++实现,详细阐述了思路及过程中遇到的错误,如未考虑容器为空的情况。通过两两归并策略,最终达到O(m * n)的时间复杂度和O(1)的空间复杂度。
最低0.47元/天 解锁文章
1480

被折叠的 条评论
为什么被折叠?



