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

    将所有起始不为空的链表的 头部存入优先队列,然后每次从优先队列里面取出值最小的, 并判断它的下一个节点是否为空,如果不为空,将下一个节点也存入优先队列。

    class Solution
    {
        struct cmp
        {
            bool operator ()(ListNode* &a, ListNode* &b)
            {
                return a->val > b->val;
            }
        };
    
    public:
        ListNode* mergeKLists(vector<ListNode*>& lists)
        {
            priority_queue<ListNode*, vector<ListNode*>, cmp> que;
    
            for(int i=0; i<lists.size(); ++ i)
            {
                if(lists[i] != nullptr)
                {
                    ListNode* f=lists[i];
                    que.push(f);
                    lists[i] = lists[i]->next;
                }
            }
            if(que.size() == 0)
                return nullptr;
    
            ListNode *arr = new ListNode(0);
            ListNode *bg = arr;
    
            while(!que.empty())
            {
                ListNode *f = que.top();
                que.pop();
    
                arr->val = f->val;
                if(f->next != nullptr)
                    que.push(f->next);
                
                if(que.empty() == false)
                {
                    arr->next = new ListNode(0);
                    arr = arr->next;
                }
            }
            return bg;
        }
    };
    
  • 相关阅读:
    join函数——Gevent源码分析
    代理上网(ssh 动态端口转发)
    内核热patch
    技术债
    mysql 隔离级别与间隙锁等
    python type
    django : related_name and related_query_name
    ssh 卡主
    logistics regression
    __new__ 和 __init__
  • 原文地址:https://www.cnblogs.com/aiterator/p/6525919.html
Copyright © 2011-2022 走看看