1. 程式人生 > >LeetCode 23 Merge k Sorted Lists 高空間消耗解法與堆的解法,還需要學習堆的做法

LeetCode 23 Merge k Sorted Lists 高空間消耗解法與堆的解法,還需要學習堆的做法

Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

解法思路:我的想法是,首先利用O(n^2)的遍歷,將所有值存到整型陣列當中,將陣列排序,輸出到一個新的連結串列當中,思路非常清晰,效率也還不錯。但是這樣的演算法有著較高的記憶體開銷,並且沒有利用連結串列的特性。因此,不提倡這種類似於作弊的演算法。雖然能夠解決K-lists類的問題,但是,對於記憶體有要求的情景下,該演算法就面臨較大的考驗。

程式碼如下:

 public ListNode mergeKLists(ListNode[] lists) {
    	if(lists.length==0){
    		return null;
    	}
    	int []num = new int[5000];
    	int index=0;
    	for (int i = 0; i < lists.length; i++) {
			ListNode l = lists[i];
			while(l!=null){
				num[index]=l.val;
				l = l.next;
				index++;
			}
		}
    	if(index==0){
    		return null;
    	}
    	 Arrays.sort(num,0,index);
    	 ListNode temp1 = new ListNode(-1);// l1 l2 首尾相連 然後冒泡
         ListNode t1 = temp1;
         int i =0;
         while(i!=index){
         	temp1.val = num[i++];
         	if(i!=index){
             temp1.next = new ListNode(0);
         	}
         	temp1 = temp1.next;
         }
    return t1;    
    }

堆的方法詳解見這個演算法:

http://blog.csdn.net/linhuanmars/article/details/19899259?utm_source=tuicool

相關推薦

LeetCode 23 Merge k Sorted Lists 空間消耗解法解法需要學習做法

Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解法思路:我的想法是,首先利用O

LeetCode 23 Merge k Sorted Lists

lee .cn cnblogs analyze 優先權 bool log sin node DescriptionMerge k sorted linked lists and return it as one sorted list. Analyze and descri

[LeetCode] 23. Merge k Sorted Lists 合並k個有序鏈表

code 有序 logs 拓展 linked targe one blank lan Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complex

Leetcode 23. Merge k Sorted Lists

merge size tor push_back lists 解決問題 sin linked lse /** * Definition for singly-linked list. * struct ListNode { * int val; *

leetcode#23 Merge k Sorted Lists

lists nod pop top describe b- list node 最大 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complex

Leetcode: 23. Merge k Sorted Lists (week1 --- hard)

Merge k Sorted Lists: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.  題意: 把k個已經

leetcode-23. Merge k Sorted Lists

題目型別: 連結串列、分治、歸併 21題的變式 題意: 合併k個已排序的連結串列 解法一:暴力–錯誤 複雜度O(k^2^ * N) 類似兩個連結串列的合併,第一個節點全部對比,小的取出,指標後移,再比較。。。。 解法二:暴力 遍歷k個連

LeetCode-23. Merge k Sorted Lists題目的思考總結

這條Hard的題目https://leetcode.com/problems/merge-k-sorted-lists/可以借鑑Medium的這個題https://leetcode.com/problems/merge-two-sorted-lists/的思維方式(程式碼) 後者的非遞迴程式碼如

python leetcode 23. Merge k Sorted Lists

Merge two Sorted Lists的進階版 建立Merge two Sorted Lists函式 合併兩個連結串列,mergeKLists中不斷二分再合併 class Solution(object): def mergeKLists(self, lists):

leetcode-23.Merge k Sorted Lists 合併 k 個有序連結串列

題目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Example: Input: [ &nbs

LeetCode: 23. Merge k Sorted Lists

題目: 23. Merge k Sorted Lists(https://leetcode.com/problems/merge-k-sorted-lists/description/) class Solution { public ListNode mergeKLists(ListN

leetCode 23. Merge k Sorted Lists (合併k個排序連結串列) 解題思路和方法

Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思路:此題是由合併兩個排序連結串

LeetCode 23. Merge k Sorted Lists 合併k個已排序的連結串列為一個排序連結串列

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Example: Input: [   1->4->5,  

LeetCode 23 Merge k Sorted Lists(合併K個已排序連結串列)

翻譯 合併K個已排序的連結串列,並且將其排序並返回。 分析和描述其複雜性。 原文 Merge k sorted linked lists and return it as one sorted list. Analyze and describ

[LeetCode]23. Merge k Sorted Lists合併K個排序連結串列

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Example: Input: [   1->4->5, &nb

Leetcode #23 Merge k Sorted Lists 合併K個有序列表 解題報告

1 解題報告 嗯,我好想就是把這題的程式碼拿過來改改就成的了。。 合併K個,其實不需要每次都同時考慮K個,請用合併排序的思想,第一輪12合併,34合併。。。。形成新的K/2個連結串列,然後第二輪

LeetCode(23)Merge K Sorted Lists

題目如下: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 分析: 第一次思考的時候,想得比較自然。打算仿照歸併排序的思路來

leetcode problem :23. Merge k Sorted Lists

solution current for lee ble return index leetcode merge class Solution { public: ListNode* mergeKLists(vector<ListNode*>&a

Python 解LeetCode23. Merge k Sorted Lists

取出 指針 div mark body merge spa ext 頭指針 題目描述:把k個排序的鏈表組成的列表合並成一個排序的鏈表 思路: 使用堆排序,遍歷列表,把每個列表中鏈表的頭指針的值和頭指針本身作為一個元素放在堆中; 第一步中遍歷完列表後,此時堆中最多會有n

23. Merge k Sorted Lists - LeetCode

.com pre pro java實現 des desc -s pub mini Question 23.?Merge k Sorted Lists Solution 題目大意:合並鏈表數組(每個鏈表中的元素是有序的),要求合並後的鏈表也是有序的 思路:遍歷鏈表數組,每次