码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 23 Merge k Sorted Lists

时间:2017-07-02 10:14:56      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:queue   代码风格   pad   .com   技术分享   images   nod   http   ini   

Description

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

多路排序的一个例子,用优先权队列保存指针,每次选出有最小的权值的指针,将其指向的节点加入结果链表。

努力改良自己代码风格,让自己的代码变得好看。技术分享

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    struct cmp
    {
        bool operator()(ListNode *a, ListNode *b)
        {
            return a->val > b->val;
        }
    };
    priority_queue<ListNode*, vector<ListNode* >, cmp > pq;

    ListNode* mergeKLists(vector<ListNode*>& lists) {
        for(int i = 0; i < lists.size(); i++)
        {
            if(lists[i] != NULL)
            {
                pq.push(lists[i]);
            }
        }
        ListNode *head = NULL;
        ListNode *p = NULL;
        while(!pq.empty())
        {
            ListNode *tmp = pq.top(); 
            pq.pop();
            
            if(head == NULL)
            {
                head = new ListNode(tmp->val);
                p = head;
            }
            else
            {
                ListNode *t = new ListNode(tmp->val);
                p->next = t;
                p = t;
            }
            tmp = tmp->next;
            if(tmp != NULL)
                pq.push(tmp);
        }

        return head;
    }
};

LeetCode 23 Merge k Sorted Lists

标签:queue   代码风格   pad   .com   技术分享   images   nod   http   ini   

原文地址:http://www.cnblogs.com/Alruddy/p/7104848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!