归并多组有序的链表
刚刚在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,以后开始顺序遍历容器,每一次取出容器内的一个链表,将它和之前已经