题解 | map缓存池链表合并

合并k个已排序的链表

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

1.要按序合并排列k个已排序的链表,首先想到的是取出各个链表的head节点作为一个缓存池pool,并且pool最好也要排序

2.之后从pool中取出最小值,该节点的next节点放入到pool中,pool中各个节点还是要排序,去一个放一个维持pool

3.若某此从pool中取得最小值节点是该链表得tail(next指向nullptr),说明此链表已经全部取完,那此链表没有节点往pool中放

4.步骤2,3一直迭代,直至pool为空,所有链表已经取完

class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        //初始化multimap,默认是按照键值升序存储
        multimap<int,ListNode*> pool;
        for(int i=0;i<lists.size();i++)
        {
            if(lists[i]==nullptr)
                continue;
            pool.insert(std::pair<int,ListNode*>(lists[i]->val,lists[i]));
        }
        ListNode* res=new ListNode(0);
        ListNode* cur=res;
        while(!pool.empty())
        {
            cur->next=pool.begin()->second;//每次cur会指向pool中最小值节点地址
            cur=cur->next;//cur更新至最小值节点
            //最小值节点next非空节点存入pool中,若为nullptr说明该条链表已取到tail,不再放入pool中
            if(pool.begin()->second->next!=nullptr)
                pool.insert(std::pair<int,ListNode*>(pool.begin()->second->next->val, pool.begin()->second->next));
            pool.erase(pool.begin());//pool中删除当前最小值节点
        }
        return res->next;
    }
};

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9305次浏览 86人参与
# 你的实习产出是真实的还是包装的? #
1698次浏览 40人参与
# MiniMax求职进展汇总 #
23772次浏览 308人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7424次浏览 43人参与
# 简历第一个项目做什么 #
31529次浏览 327人参与
# 重来一次,我还会选择这个专业吗 #
433325次浏览 3926人参与
# 米连集团26产品管培生项目 #
5667次浏览 214人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186945次浏览 1120人参与
# 牛客AI文生图 #
21408次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152282次浏览 887人参与
# 研究所笔面经互助 #
118864次浏览 577人参与
# 简历中的项目经历要怎么写? #
310019次浏览 4189人参与
# AI时代,哪些岗位最容易被淘汰 #
63364次浏览 800人参与
# 面试紧张时你会有什么表现? #
30482次浏览 188人参与
# 你今年的平均薪资是多少? #
213000次浏览 1039人参与
# 你怎么看待AI面试 #
179828次浏览 1232人参与
# 高学历就一定能找到好工作吗? #
64303次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76429次浏览 374人参与
# 我的求职精神状态 #
447971次浏览 3128人参与
# 正在春招的你,也参与了去年秋招吗? #
363215次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160572次浏览 1110人参与
# 校招笔试 #
470247次浏览 2962人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务