题目描述:合并k个已排序的链表,并将其作为一个已排序的链表返回。分析并描述其复杂度。
示例1
        输入:[{1,2,3},{4,5,6,7}]
        返回值:{1,2,3,4,5,6,7}
思路:简单直接,利用一维数组将k个链表中的元素存储下来,然后对一维数组进行排序最后生成单链表返回即可。具体代码如下:

/**
 * 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 *res = (ListNode *)malloc(sizeof(ListNode)),*q=res;
        int k = lists.size();
        vector<int> r;
        for(int i=0;i<k;i++)
        {
            ListNode *p = lists[i];
            while(p!=NULL)
            {
                r.push_back(p->val);
                p = p->next;
            }
        }
        sort(r.begin(),r.end());
        for(int i=0;i<r.size();i++)
        {
            ListNode *t = (ListNode *)malloc(sizeof(ListNode));
            t->val = r[i];
            t->next = NULL;
            q->next = t;
            q = q->next;
        }
        return res->next;
    }
};