题解 | #合并k个已排序的链表#

合并k个已排序的链表

http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

题目描述:合并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;
    }
};
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务