描述:
合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。
示例1
输入:
[{1,3,4},{2,5,6,7}]
返回值:
{1,2,3,4,5,6,7}
(题目来自牛客网)
用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) { //ListNode*表示一个链表头,此类型的vector可以表示多个链表
//一个list用一个ListNode*节点,vector中有若干个list
//思路,可以采取一个个合并的想法来完成
if(lists.size() == 0)
return nullptr;
ListNode* head = nullptr;
for(int i = 0; i<lists.size(); ++i)
{
head = connectList(head, lists[i]); //循环调用connectList函数进行比较来连接
}
return head;
}
ListNode* connectList(ListNode* p1, ListNode* p2){
if(p1 &#