Leetcode 合併k個鍊錶

2021-09-28 15:56:41 字數 1150 閱讀 9834

1、分治遞迴思想(時間複雜度nlogk,空間複雜度,)

執行用時 :88 ms, 在所有 cpp 提交中擊敗了33.27%的使用者

記憶體消耗 :29.7 mb, 在所有 cpp 提交中擊敗了5.09%的使用者

class solution

else

ptr=ptr->next;

}if(l1)

if(l2)

return newhead.next;

}listnode* mergeklists(vector& lists)

if(lists.size()==1)

int length=lists.size();

int mid=length/2;

vectorlist1;

vectorlist2;

int i=0;

for(;i

2、兩兩合併思想(時間複雜度nk,空間複雜度,)

執行用時 :32 ms, 在所有 cpp 提交中擊敗了93.51%的使用者

記憶體消耗 :11.2 mb, 在所有 cpp 提交中擊敗了83.67%的使用者

class solution

else

ptr=ptr->next;

}if(l1)

if(l2)

return newhead.next;

}listnode* mergeklists(vector& lists)

class solution

}sort(veclists.begin(),veclists.end(),cmp);

listnode newhead(0);

listnode* ptr=&newhead;

for(int i=0;ival);

ptr->next=node;

ptr=ptr->next;

}return newhead.next;}};

4、用優先佇列(時間複雜度nk,空間複雜度,)

執行用時 :36 ms, 在所有 cpp 提交中擊敗了84.37%的使用者

記憶體消耗 :11.7 mb, 在所有 cpp 提交中擊敗了65.07%的使用者

struct cmp};

class solution

return newhead.next;}};

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...

LeetCode 合併K個排列鍊錶

題目描述 合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。首先了解一下堆排列的模組函式heapq,heapq函式簡介 答題思路 遍歷lists,將每乙個鍊錶的節點新增到堆中,之後不斷從堆中取最小值,新增到新的鍊錶中,最後返回這個列表 具體程式如下 class solution...