zoukankan      html  css  js  c++  java
  • LeetCode 23 Merge k Sorted Lists

    Description

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

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

    努力改良自己代码风格,让自己的代码变得好看。Open-mouthed smile

    /**
     * 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;
        }
    };
    如果有错误,请指出,谢谢
  • 相关阅读:
    TestNG详解-深度好文
    自动化测试用例getText()获取某一个元素的值返回null或空
    Python装饰器
    工资管理系统
    并发,并行
    TCP/IP协议
    tcp长连接和短连接
    tcp注意点
    文件下载器
    tcp服务器
  • 原文地址:https://www.cnblogs.com/Alruddy/p/7104848.html
Copyright © 2011-2022 走看看