Merge k Sorted Lists解題報告

Description:

Merge k sorted linked lists and return it as one sorted list.

Analyze and describe its complexity.

Example:

Given lists:

[
2->4->null,
null,
-1->null
],
return -1->2->4->null.

Link:

http://www.lintcode.com/en/problem/merge-k-sorted-lists/

解題思路:

使用堆排序可以解決

Time Complexity:

O(kn)

完整代碼:

struct compare { bool operator ()(ListNode *a, ListNode *b) { return a->val > b->val; } }; class Solution { public: ListNode *mergeKLists(vector<ListNode *> &lists) { if(lists.size() == 0) return NULL; priority_queue <ListNode *, vector<ListNode *>, compare> pq; for(int i = 0; i < lists.size(); i++) { ListNode *temp = lists[i]; while(temp != NULL) { pq.push(temp); temp = temp->next; } } ListNode *dummy = new ListNode(0); ListNode *tail = dummy; while(!pq.empty()) { tail->next = pq.top(); pq.pop(); tail = tail->next; } return dummy->next; } };

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容