LeetCode練習(七) 合併 k 個排序鍊錶

2021-09-29 22:34:48 字數 1184 閱讀 1152

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度

* 示例:

* 輸入:

* [*   1->4->5,

*   1->3->4,

*   2->6

* ]* 輸出: 1->1->2->3->4->4->5->6

**:

public class leetcodeseven 

public listnode setnext(int val)

}/*** 分治法 */

public listnode mergeklists(listnode lists)

if(lists.length == 1)

int length = lists.length;

while(true)

// 去掉空的

lists = removeempty(lists);

if(lists.length == 1)

}return lists[0];

}private listnode removeempty(listnode lists) else

}return temp.toarray(new listnode[temp.size()]);

}private listnode combine(listnode one, listnode two)

if(two == null)

while (true)else

temp = result;

}// 如果 list1 空了 就把list2接上來

while(one == null)

while(two == null)

if(out)

while(one != null && one.val <= two.val)

while(one == null)

if(out)

while(two != null && two.val <= one.val)

}return result;

}/*** 先入到乙個陣列中 再排序 再 */

public listnode mergeklists2(listnode lists)

public static void main(string args)

}}

Leetcode 合併k個鍊錶

1 分治遞迴思想 時間複雜度nlogk,空間複雜度,執行用時 88 ms,在所有 cpp 提交中擊敗了33.27 的使用者 記憶體消耗 29.7 mb,在所有 cpp 提交中擊敗了5.09 的使用者 class solution else ptr ptr next if l1 if l2 retur...

leetcode 合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 方法1 暴力法 將所有鍊錶元素放入乙個陣列中,再對陣列排序,最後返回乙個排好序的鍊錶,但是似乎時間和記憶體會超,無法通過 複雜度取決於排序占用的複...

leetcode合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 直接上 class solution object defmergeklists self,lists type lists list listn...