LeetCode: Merge k Sorted Lists

自己寫的太復雜了,一開始想的是給開始的lists頭們排序,然后從這個序列的第一個抽出來,然后再重新用二分法進行排序,不過這個方法large超時了,看了網上的發現還是用很土地方法用一個for循環從前兩個開始merge到最后,不知道為什么自己把這個想這么復雜。

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode *merge(ListNode *p, ListNode *q) {
12         if (!p) return q;
13         if (!q) return p;
14         ListNode *ret = NULL;
15         ListNode *reti;
16         while (p && q) {
17             if (!ret) {
18                 ret = new ListNode(min(p->val, q->val));
19                 reti = ret;
20                 if (p->val < q->val) p = p->next;
21                 else q = q->next;
22             }
23             else {
24                 ListNode *tmp = new ListNode(min(p->val, q->val));
25                 ret->next = tmp;
26                 ret = ret->next;
27                 if (p->val < q->val) p = p->next;
28                 else q = q->next;
29             }
30         }
31         if (!p) ret->next = q;
32         if (!q) ret->next = p;
33         return reti;
34     }
35     ListNode *mergeKLists(vector<ListNode *> &lists) {
36         // Start typing your C/C++ solution below
37         // DO NOT write int main() function
38         if (!lists.size()) return NULL;
39         ListNode *ret = lists[0];
40         for (int i = 1; i < lists.size(); i++) ret = merge(ret, lists[i]);
41         return ret;
42     }
43 };

?推薦下面這個更符合面試的代碼

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 struct cmp {
10     bool operator()(ListNode *a, ListNode *b) {
11         return a->val > b->val;
12     }
13 };
14 class Solution {
15 public:
16     ListNode *mergeKLists(vector<ListNode *> &lists) {
17         priority_queue<ListNode*, vector<ListNode*>, cmp> S;
18         if (lists.size() == 0) return NULL;
19         for (int i = 0; i < lists.size(); i++) {
20             if (lists[i]) S.push(lists[i]);
21         }
22         ListNode *ans = NULL;
23         ListNode *p = ans;
24         while (!S.empty()) {
25             ListNode *tmp = S.top();
26             if (!ans) {
27                 ans = tmp;
28                 p = ans;
29             }
30             else {
31                 p->next = tmp;
32                 p = p->next;
33             }
34             if (!tmp->next) S.pop();
35             else {
36                 tmp = tmp->next;
37                 S.pop();
38                 S.push(tmp);
39             }
40         }
41         return ans;
42     }
43 };

?

轉載于:https://www.cnblogs.com/yingzhongwen/archive/2013/04/09/3010533.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378620.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378620.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378620.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA 取得當前目錄的路徑

在寫java程序時不可避免要獲取文件的路徑...總結一下,遺漏的隨時補上 1.可以在servlet的init方法里 String path getServletContext().getRealPath("/"); 這將獲取web項目的全路徑 例如 :E:/eclipseM9/workspace/tree/ tree是我web項目的根目錄 2.你也可以隨時在任意…

golang mysql curd_Go 語言操作 MySQL 之 CURD 操作

本文轉載于SegmentFault社區作者&#xff1a;Meng小羽MySQL 是目前開發中最常見的關系型數據庫&#xff0c;使用 Go 語言進行操控數據庫需要使用 Go 自帶database/sql和驅動go-sql-driver/mysql來實現。創建好 Go 項目&#xff0c;需要引用驅動依賴&#xff1a;go get -u githu…

02.1-元素定位(find)

常用的一些方法 一、導包 from selenium import webdriver二、打開火狐&#xff08;空白頁&#xff09; b webdriver.Firefox()三、跳轉到指定的網站 b.get(https://www.baidu.com/)四、將瀏覽器頁面最大化 b.maximize_window()五、通過F12可查看當前的貼吧為超鏈接形式 …

快速傅里葉變換(FFT)——按時間抽取DIT的基

目錄【1】前言1、DIF計算量2、利用性質改善【2】公式推導1、N 到 2*N/2a、分解原序列b、分解后的DFT變換c、一系列化簡操作之后d、蝶形信號流e、計算量總結2、N/2 到 2*N/4a、分解X2(k)序列b、蝶形信號流&#xff08;2列&#xff09;3、N/4 到 2*N/8a、蝶形信號流&#xff08;3…

Python字符串| 帶示例的format()方法

String.format()方法 (String.format() Method) format() method is used to format the string (in other words - we can say to achieve the functionality like printf() in C language). format()方法用于格式化字符串(換句話說&#xff0c;我們可以說實現了C語言中類似于…

PLSQL Developer使用技巧

1、PL/SQL Developer記住登陸密碼在使用PL/SQL Developer時&#xff0c;為了工作方便希望PL/SQL Developer記住登錄Oracle的用戶名和密碼&#xff1b;設置方法&#xff1a;PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History &#xff0c; “St…

3月份的總結

租房子找了個黑中介&#xff0c;各種扣錢&#xff0c;合租的違約了&#xff0c;押金不要了直接一走了之&#xff0c;水費我們承擔&#xff0c;中介這會兒又把責任推得一干二凈&#xff0c;還耍小聰明&#xff0c;非說我是兩個人住的&#xff0c;各種費用要交兩份。。。我一時氣…

快速傅里葉變換(FFT)——按頻率抽取DIF的基

目錄【1】回顧DIT【2】算法原理【3】運算特點【1】回顧DIT https://blog.csdn.net/qq_42604176/article/details/105559756 【2】算法原理 設序列點數&#xff1a;N2^M,M為正整數。將輸入序列按照前一半、后一半分開。&#xff08;并非按照奇偶分&#xff09; 由于&#xf…

02.2-元素定位(XPath)

XML路徑語言用來確定XML文檔中某部分位置的語言XPath用于在XML文檔中通過元素和屬性進行導航XPath遵守W3C標準XPath節點類型&#xff1a; 元素、屬性、文本、命名空間、指令處理、注釋、文檔 通過路徑表達式從XML文檔中選取節點或節點設置 表達式結果說明/xxx選取根節點xxx/xx…

android ImageView 之 android:scaleTye=

原文&#xff1a;http://juliaailse.iteye.com/blog/1409317 1、scaleType“matrix” 是保持原圖大小、從左上角的點開始&#xff0c;以矩陣形式繪圖。 2、scaleType“fitXY” 是將原圖進行橫方向&#xff08;即XY方向&#xff09;的拉伸后繪制的。 3、scaleType“fitStart…

acquire方法_Python鎖類| 帶有示例的acquire()方法

acquire方法Python Lock.acquire()方法 (Python Lock.acquire() Method) acquire() is an inbuilt method of the Lock class of the threading module in Python. acquisition()是Python中線程模塊的Lock類的內置方法。 This method is used to acquire a lock, either block…

VSS2008 安裝silverlight3.0步驟

需要的Q我359273753 我是新手不知道在哪里上傳附件 汗一個轉載于:https://www.cnblogs.com/ganler1988/archive/2011/03/17/1987367.html

php字符串對象,PHP字符串到對象名稱

好的我有一個字符串……$a_string "Product";我想在調用這樣的對象時使用這個字符串&#xff1a;$this->$a_string->some_function();狄更斯如何動態調用該對象&#xff1f;(不要以為我在PHP 5心中)解決方法:所以你要使用的代碼是&#xff1a;$a_string &quo…

莫比烏斯函數---C++

【問題描述】 莫比烏斯函數&#xff0c;數論函數&#xff0c;由德國數學家和天文學家莫比烏斯(Mobius&#xff0c;1790-1868)提出。梅滕斯(Mertens)首先使用μ(n)作為莫比烏斯函數的記號。而據說&#xff0c;高斯(Gauss)比莫比烏斯早三十年就曾考慮過這個函數。莫比烏斯函數在數…

Opencv——findContours函數再探(由輪廓聯想連通域)

目錄關于調參的一些思考分析圖像的一些角度面積、周長、矩形度、圓形度、寬長比例1&#xff1a;找出汽車輪轂圓孔&#xff08;從輪廓和連通域兩個角度&#xff09;例2&#xff1a;找出芯片中間正方形物體例3&#xff1a;桌面上橘色物體總結關于調參的一些思考 合理的參數設置&…

stl vector 函數_vector :: crend()函數以及C ++ STL中的示例

stl vector 函數C vector :: crend()函數 (C vector::crend() function) vector::crend() is a library function of "vector" header, it is used to get the first element of a vector from reverse ending, it returns a const reverse iterator pointing to th…

.Net DateTime.ToString 格式化輸出 (轉載)

原文 雖然 System.DateTime 本身已經具有了不少現成的格式化輸出&#xff0c;例如&#xff1a; ToLongDateString, ToShortTimeString, ToUniversalTime 等&#xff0c;但是卻遠遠不能滿足我們實際的需要&#xff0c;這就要用到了 DateTime.ToString&#xff0c;就要提到 DateT…

modelsim 編譯 xilinx庫

1.為單個工程加入庫 在某一個目錄建立工程 然后 vlib unisim vcom -work unsim *.vhd 然后就加入了unisim庫 如果是windows的話&#xff0c;工程文件mpf應該是記錄了這個庫的信息&#xff0c;所以重新打開這個工程時&#xff0c;依然有這個庫 linux&#xff0c;不用gui界面…

php 字符串匹配 like,ThinkPHP like模糊查詢,like多匹配查詢,between查詢,in查詢,一般查詢書寫方法...

搜索熱詞ThinkPHP的數據庫條件查詢語句有字符串式&#xff0c;數組式書寫方法字符串式即是原生式&#xff0c;數組式查詢語句因書寫方式與特定字符的原因比較復雜&#xff0c;下面為大家例出了常用的ThinkPHP數組式查詢語句的使用方法ThinkPHP一般查詢$data_gt[id]array(gt,8);…

C++---漢明距離

兩個整數之間的漢明距離指的是這兩個數對應二進制位不同的位置的數目。 【輸入形式】 給出兩個整數x和y(0<x,y<2^31)&#xff0c;用空格分隔 【輸出形式】 輸出他們之間的漢明距離 【樣例輸出】 1 4 【樣例說明】 00000000 00000000 00000000 00000001 00000000 00000000…