LeetCode 23. 合并K个排序链表(优先队列)

文章目录

    • 1. 题目信息
    • 2. 思路
    • 3. 代码

1. 题目信息

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:输入:
[1->4->5,1->3->4,2->6
]
输出: 1->1->2->3->4->4->5->6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 思路

  1. 建立优先队列(小顶堆)
  2. 将每个链表的队首指针push进入优先队列,O(k)
  3. 取出堆顶,读取堆顶的值,插入新的链表,O(1)
  4. 将堆顶的next指针(如果存在)push进入优先队列,O(logk)
  5. 弹出堆顶,O(logk)
  6. 循环以上 3-6 ,复杂度*n(总的结点个数)
    总的时间复杂度O(n • logk)

3. 代码

在这里插入图片描述

/*** 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;}};ListNode* mergeKLists(vector<ListNode*>& lists){priority_queue<ListNode*, vector<ListNode*>, cmp> queue;ListNode *head = new ListNode(0);ListNode *temp = head, *topNext;for(int i = 0; i < lists.size(); ++i){if(lists[i])queue.push(lists[i]);}while(!queue.empty()){temp->next = queue.top();temp = temp->next;topNext = queue.top()->next;queue.pop();if(topNext)queue.push(topNext);}return head->next;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解

JVM系列 直通BAT必考题系列&#xff1a;7种JVM垃圾收集器特点&#xff0c;优劣势、及使用场景 直通BAT必考题系列&#xff1a;JVM的4种垃圾回收算法、垃圾回收机制与总结 直通BAT必考题系列&#xff1a;深入详解JVM内存模型与JVM参数详细配置 JVM内存调优 对JVM内存的系统级…

论文浅尝 | 知识图谱三元组置信度的度量

论文笔记整理&#xff1a;叶橄强&#xff0c;浙江大学计算机学院&#xff0c;知识图谱和知识推理方向。https://arxiv.org/pdf/1809.09414.pdf动机在构建知识图谱的过程中&#xff0c;不可避免地会产生噪声和冲突。基于知识图谱的任务或应用一般默认假定知识图谱中的知识是完全…

跟小伙伴们做了个高效刷论文的小站

好久木有在知乎冒泡了&#xff0c;不知道还能不能出现在大家的timeline上哇QAQ正文开始之前还是先习惯性的碎碎念一下。前段时间换了研究方向&#xff0c;重新pick了问答和检索&#xff0c;为了追上相关问题的最新进展&#xff0c;就顾不上写文的刷了一堆paper&#xff0c;加上…

模拟进化与遗传算法

遗传算法是目前研究得最为广泛的一类模拟进化算法。 假定考虑全局优化问题&#xff08;P&#xff09;。遗传算法基于以下两条基本策略求解问题&#xff1a; 对于给定的目标函数F&#xff0c;它使用&#xff26;的任一适应性函数&#xff08;换言之&#xff0c;一个值域非负、…

消息中间件系列(六):什么是流量削峰?如何解决秒杀业务的削峰场景

流量削峰的由来 主要是还是来自于互联网的业务场景&#xff0c;例如&#xff0c;马上即将开始的春节火车票抢购&#xff0c;大量的用户需要同一时间去抢购&#xff1b;以及大家熟知的阿里双11秒杀&#xff0c; 短时间上亿的用户涌入&#xff0c;瞬间流量巨大&#xff08;高并发…

论文浅尝 | 基于深度序列模型的知识图谱补全

本文转载自公众号&#xff1a;DI数据智能。 Learning to Complete Knowledge Graphs with Deep Sequential Models作者&#xff1a;郭凌冰、张清恒、胡伟、孙泽群、瞿裕忠单位&#xff1a;南京大学供稿&#xff1a;胡伟引用L. Guo, Q. Zhang, W. Hu, Z. Sun, & Y. Qu. …

拨开算力的迷雾:聊聊不同 GPU 计算能力的上限

文 | 卜居知乎编 | 兔子酱通过深入了解自己手头 GPU 的计算能力上限&#xff0c;能够在买新卡时做出更理性判断。本文深入GPU架构&#xff0c;重点介绍了其中的ampere架构。另外&#xff0c;作者还对比了不同GPU之间的峰值计算能力&#xff0c;增加读者对硬件资源的了解。前言2…

LeetCode 20. 有效的括号(栈)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个只包括 ‘(’&#xff0c;’)’&#xff0c;’{’&#xff0c;’}’&#xff0c;’[’&#xff0c;’]’ 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括…

消息中间件系列(八):Kafka、RocketMQ、RabbitMQ等的优劣势比较

在高并发业务场景下&#xff0c;典型的阿里双11秒杀等业务&#xff0c;消息队列中间件在流量削峰、解耦上有不可替代的作用。 之前介绍了MQ消息队列的12点核心原理总结&#xff0c;以及如何从0到1设计一个MQ消息队列&#xff0c;以及RPC远程调用和消息队列MQ的区别 今天我们一…

论文浅尝 | 一种用于多关系问答的可解释推理网络

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为跨语言知识图谱问答。来源&#xff1a;COLING 2018链接&#xff1a;https://www.aclweb.org/anthology/C18-1171问题背景与动机多关系问答&#xff08;multi-relationquestion answering&#…

蚁群优化算法 ACO

群体智能&#xff08;swarm intelligence&#xff09; 定义&#xff1a; 由单个复杂个体完成的任务可由大量简单个体组成的群体合作完成&#xff0c;而后者往往更具有健壮性、灵活性等优势。在没有集中控制&#xff0c;不提供全局模型的前提下&#xff0c;为寻找复杂问题解决…

量化投资交易 vn.py

前言&#xff1a;当初接触到vnpy&#xff0c;一开始当然是按照该项目在GitHub上的指南&#xff0c;开始安装&#xff0c;配置&#xff0c;阅读Wiki&#xff0c;但是作为一个python新手&#xff0c;并不能马上利用vnpy来写策略回测甚至实盘。所以我决定还是从源码看起&#xff0…

掌握神经网络,我应该学习哪些至关重要的知识点?

人工智能作为计算机科学领域的一个分支&#xff0c;在互联网和大数据的时代浪潮中显现出其巨大的潜力和蓬勃的活力&#xff0c;类似电子医生、无人驾驶等新名词纷纷涌现。人工智能凭借着它无与伦比的发展优势&#xff0c;推动了各大产业和技术的革命与创新&#xff0c;使得生产…

LeetCode 32. 最长有效括号(栈DP)

文章目录1. 题目信息2. 栈 解题3. 动态规划 解题1. 题目信息 给定一个只包含 ‘(’ 和 ‘)’ 的字符串&#xff0c;找出最长的包含有效括号的子串的长度。 示例 1:输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2:输入: ")()())" 输…

消息中间件系列(四):消息队列MQ的特点、选型、及应用场景详解

前面集中谈了分布式缓存Redis系列&#xff1a; 高并发架构系列&#xff1a;分布式锁的由来、特点、及Redis分布式锁的实现详解 高并发架构系列&#xff1a;Redis并发竞争key的解决方案详解 高并发架构系列&#xff1a;Redis缓存和MySQL数据一致性方案详解 Redis的高可用详解…

基金定投

https://www.zhihu.com/question/19909886 相信我&#xff0c;这篇攻略能让你彻底搞懂基金&#xff0c;每年大概率能赚10%左右的收益&#xff01;基金定投核心要搞懂两个问题&#xff1a;买什么基金&#xff0c;什么时候买。今天我给大家一篇文章讲透这两个问题&#xff01;我说…

卖萌屋学术站发布!通往高效刷论文之路

文 | 夕小瑶编 | 兔子酱学术站诞生好久没有冒泡啦&#xff0c;大家还记得雁栖湖畔的夕小瑶吗&#xff01;&#xff08;划掉(*/ω&#xff3c;*)趁着国庆假期&#xff0c;跟卖萌屋小伙伴们终于把拖延已久的《Arxiv神器》翻新了&#xff0c;零零星星做了几个月&#xff0c;最近终…

消息中间件系列(五):MQ消息队列的12点核心原理总结

消息队列已经逐渐成为分布式应用场景、内部通信、以及秒杀等高并发业务场景的核心手段&#xff0c;它具有低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。 无论是 RabbitMQ、RocketMQ、ActiveMQ、Kafka还是其它等&#xff0c;都有的一些基本原理、术语、机制等&…

征稿 | 2019年全国知识图谱与语义计算大会(CCKS2019)投稿时间延长

全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Computing&#xff09;由中国中文信息学会语言与知识计算专业委员会组织和承办。全国知识图谱与语义计算大会是两个全国性会议的合并&#xff1a;中文知识图谱研讨会the Chines…

LeetCode 641. 设计循环双端队列

文章目录1. 题目信息2. 解题1. 题目信息 设计实现双端队列。 你的实现需要支持以下操作&#xff1a; MyCircularDeque(k)&#xff1a;构造函数,双端队列的大小为k。 insertFront()&#xff1a;将一个元素添加到双端队列头部。 如果操作成功返回 true。 insertLast()&#xff…