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.pswp.cn/news/372171.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372171.shtml
英文地址,請注明出處:http://en.pswp.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…