Leetcodes Solutions 23 Merge k Sorted Lists

匯總

雪之下雪乃:leetcode解題總匯?

zhuanlan.zhihu.com圖標

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

思路1

對多個lists中的兩個不斷使用mergeTwoLists

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *mergeKLists(vector<ListNode *> &lists){ if(lists.empty()){ return nullptr; } while(lists.size() > 1){ lists.push_back(mergeTwoLists(lists[0], lists[1])); lists.erase(lists.begin()); lists.erase(lists.begin()); } return lists.front(); } ListNode *mergeTwoLists(ListNode *l1, ListNode *l2){ if(l1 == nullptr){ return l2; } if(l2 == nullptr){ return l1; } if(l1->val <= l2->val){ l1->next = mergeTwoLists(l1->next, l2); return l1; }else{ l2->next = mergeTwoLists(l1, l2->next); return l2; } }};

推薦閱讀:

旋轉數組的最小數字
二叉搜索樹的後序遍歷序列
數組中出現次數超過一半的數字
期望為線性時間的選擇演算法
鄰接矩陣的應用

TAG:編程 | 演算法 | 數據結構 |