leecode 题解 || Merge k Sorted Lists 问题

problem:

Merge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.Tags Divide and Conquer Linked List Heap

合并K个已序单链表


thinking:

 (1)题目没有要求不能够新开ListNode,所以暴力破解法:提取K个list的keyword。排序、新建结点插入。这样的情况对原list是否排好序没有要求。

         排序时间复杂度能够做到O(N* log N )。提取keyword和新建结点的时间复杂度都为O(N),所以总的时间复杂度为O(N*logN),这没有考虑新建结点的时间浪费和空间           浪费。

(2)採用能够容纳结点的容器,想到的是堆,或者堆的封装-优先队列,因为堆的O(N*logN)排序的时间复杂度。并且不用新开结点,节省空间。

暴力法:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *mergeKLists(vector<ListNode *> &lists) {ListNode *newlist=NULL;vector<int> tem;for(int i=0;i<lists.size();i++){while(lists.at(i)!=NULL){tem.push_back(lists.at(i)->val);lists.at(i)=lists.at(i)->next;}}if(tem.size()==0)return NULL;sort(tem.begin(),tem.end());for(int i=tem.size()-1;i>=0;i--){ListNode *p = new ListNode(tem.at(i));p->next = newlist;newlist = p;}return newlist;}//mergeKLists()};

优先队列法:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class ListNodeCompare:public binary_function<ListNode*,ListNode*,bool>
{
public:bool operator()(ListNode* t1,ListNode* t2)const{if ( !t1||!t2 )return !t2;return t1->val>t2->val;}
};
class Solution {
public:ListNode *mergeKLists(vector<ListNode *> &lists) {// Note: The Solution object is instantiated only once and is reused by each test case.if (lists.empty())return NULL;priority_queue<ListNode*,vector<ListNode*>,ListNodeCompare> Q;for(int i=0;i<lists.size();i++)if ( lists[i]!=NULL)Q.push(lists[i]);ListNode guard(-1);ListNode* tail=&guard;while(!Q.empty()){ListNode* toAdd=Q.top();Q.pop();tail->next=toAdd;tail=tail->next;if (toAdd->next)Q.push(toAdd->next);}return guard.next;}
};


转载于:https://www.cnblogs.com/jzssuanfa/p/6861575.html

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

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

相关文章

PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓

缓存的主要作用是防止用户频繁刷新网站页面&#xff0c;导致服务器数据库负担&#xff0c;既要保证信息更新的及时性&#xff0c;也要保证缓存能被充分利用。http协议里控制浏览器缓存的头有三个Cache-Control&#xff0c;Expires&#xff0c;Last-Modified&#xff0c;在PHP下…

js -03课 -03 js中的真假判断

真假的问题&#xff1a;数据类型-数字&#xff08;NaN&#xff09;、字符串、布尔、函数、对象&#xff08;elem、[]、{}、null&#xff09;、未定义真&#xff1a;非0的数字、非空字符串、true、函数、能找到的元素、[]、{}假&#xff1a;0、NaN、空字符串、false、不能找到的…

HBASE启动失败,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

Master日志错误&#xff1a;2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterat org.apache.hadoop.hbase.master.HMaster.constru…

Java线程:我应该创建几个

介绍 “我应该创建多少个线程&#xff1f;”。 许多年前&#xff0c;我的一个朋友问我这个问题&#xff0c;然后我按照“ CPU核心数 1”的指示给了他答案。 当您在这里阅读时&#xff0c;大多数人都在点头。 不幸的是&#xff0c;我们所有人当时都错了。 现在&#xff0c;如果您…

java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)

前言游戏并不像app一样直接把渲染树节点暴露出来&#xff0c;这就造成游戏UI自动化在元素定位上的不方便性&#xff0c;不过依赖airtest的图片识别&#xff0c;我们可以直接跳过元素检查&#xff0c;以图片对比的形式进行自动化&#xff0c;虽然效率可能会低一些&#xff0c;但…

Spring JDBC数据库连接池设置

对于任何Java应用程序而言&#xff0c; 在Spring框架中设置JDBC数据库连接池都是很容易的&#xff0c;仅需更改spring配置文件中的一些配置即可。使用Apache Commons DBCP和Commons Pool以及Spring框架的连接池是不错的选择&#xff0c;但是如果您拥有Web服务器和托管的J2EE容器…

BZOJ 3505 [Cqoi2014]数三角形(组合数学)

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id3505 【题目大意】 给定一个nxm的网格&#xff0c;请计算三点都在格点上的三角形共有多少个。   注意三角形的三点不能共线。 【题解】 我们计算三个点组合的情况&#xff0c;去除横竖三共线&#xff0c;以及斜…

matlab多项式加法运算,matlab多项式运算与代数方程求解解析.ppt

* 多项式运算与代数方程求解 数学软件 Matlab Matlab基础及应用 * 多项式转化为符号表达式&#xff1a;poly2sym 四则运算&#xff1a;conv、deconv 导数与积分&#xff1a;ployder、polyint 求值与零点&#xff1a;polyval、polyvalm、roots、poly 多项式运算 主要内容 代数方…

java.lang.NoClassDefFoundError:如何解决–第3部分

本文是我们的NoClassDefFoundError故障排除系列的第3部分。 正如我在第一篇文章中提到的那样&#xff0c;有许多可能导致NoClassDefFoundError的问题。 本文将重点介绍该问题的最常见原因之一&#xff1a;Java类静态初始化程序块或变量的失败。 将提供一个示例Java程序&#xf…

django实现瀑布流、组合搜索、阶梯评论、验证码

django实现图片瀑布流布局 我们在一些图片网站上经常会看到&#xff0c;满屏都是图片&#xff0c;而且图片都大小不一&#xff0c;却可以按空间排列。默认一个div是占用一行&#xff0c;当想把div里的图片并排显示的时候&#xff0c;只能使用float属性&#xff0c;但是&#xf…

通过ifrmae异步下载文档

//通过ifrmae异步下载文档 function iframeGetFile(opts) {var defaultOpts {filePath: ,onload: function (e) { }}, iframeFile;$.extend(defaultOpts, opts);iframeFile document.createElement("iframe");iframeFile.onload function (e) {defaultOpts.onload…

IO与NIO –中断,超时和缓冲区

假设有一个系统有时需要将文件复制到几个位置&#xff0c;但是这种方式在响应速度至关重要的情况下。 换句话说&#xff0c;如果由于某种原因文件系统过载&#xff0c;并且我们无法在不到一秒钟的时间内写入文件&#xff0c;则应该放弃。 ExecutorService是一项非常方便的工作工…

实验5 matlab程序设计2,实验5 Matlab程序设计2

实验5 Matlab程序设计21. 实验目的&#xff1a;2. 掌握建立和执行M文件的方法&#xff1b; 3. 掌握实现选择结构的方法&#xff1b; 4. 掌握实现循环结构的方法。5. 熟悉利用向量运算来代替循环操作的方法。 6. 实验内容&#xff1a;27. 根据61111 122232n2&#xff0c;求π的近…

【poj1041】 John's trip

http://poj.org/problem?id1041 (题目链接) 题意 给出一张无向图&#xff0c;求字典序最小欧拉回路。 Solution 这鬼畜的输入是什么心态啊mdzz&#xff0c;这里用vector储存边&#xff0c;便于边的排序。瞬间变成STL常数boy →_→。 细节 数组大小把握好。 代码 // poj1041 #i…

记一次ora-1652错误的解决过程

报错现象&#xff1a; 通过v$RMAN_BACKUP_JOB_DETAILS查看备份状态&#xff0c;一直卡着不出结果&#xff0c;很长一段时间之后抛出ORA-1652: unable to extend temp segment by 128 in tablespace &#xff0c;此时查看临时表空间使用情况&#xff0c;发现占用很少&#xff0c…

带有docx4j的Java Word(.docx)文档

几个月前&#xff0c;我需要创建一个包含许多表和段落的动态Word文档。 过去&#xff0c;我曾使用POI来实现此目的&#xff0c;但是我发现它很难使用&#xff0c;并且在创建更复杂的文档时对我来说效果不佳。 因此&#xff0c;对于这个项目&#xff0c;经过一番搜索&#xff0c…

mysql中distinct关键字,MySQL关键字Distinct的详细介绍

DDLPrepare SQL&#xff1a;?Prepare Data&#xff1a;?查询数据如下图所示&#xff1a;第一种情况&#xff0c;使用Distinct关键字&#xff0c;查询单列数据&#xff0c;如下图所示&#xff1a;结果&#xff1a;对 name 字段进行去重处理&#xff0c;符合预期期望&#xff0…

#pragma 预处理指令

Linux C 编程一站式学习 #pragma 预处理指示供编译器实现一些非标准的特性&#xff0c;C 标准没有规定 #pragma 后面应该写什么以及起什么作用&#xff0c;由编译器自己规定。有的编译器用 #pragma 定义一些特殊功能寄存器名&#xff0c;有的编译器用 #pragma 定位链接地址&…

px ,em ,rem

做移动端或者响应式的页面必然需要字体的变化的。这次我就自己的经验来说说他们之间的关系&#xff0c;以及怎么用。 px (绝对单位)是我们常用的就不说了。 em&#xff08;相对单位&#xff0c;相对父级&#xff09; em 指字体高&#xff0c;任意浏览器的默认字体高都是16px。所…

使用JAnnocessor生成Java代码

在本文中&#xff0c;我将向你展示如何生成的代码JAnnocessor通过创建框架Nikolche Mihajlovski 。 在Nikolche的演讲中&#xff0c;我第一次在GeeCON 2012大会上遇到JAnnocessor&#xff1a; “创新和实用的Java源代码生成” &#xff08;幻灯片&#xff09; 。 之后&#xff…