23. Merge k Sorted Lists

来源:互联网 发布:淘宝现在做什么比较好 编辑:程序博客网 时间:2024/05/18 12:34

23. Merge k Sorted Lists

思路:divide and conquer,分治
code:

    #include <iostream>    #include <vector>    #include <string>    #include <queue>    using namespace std;    /**     * Definition for singly-linked list.     * struct ListNode {     *     int val;     *     ListNode *next;     *     ListNode(int x) : val(x), next(NULL) {}     * };     */    // Divide and Conquer    class Solution {    public:        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {            if (!l1) return l2;            if (!l2) return l1;            if (l1->val <= l2->val) {                l1->next = mergeTwoLists(l1->next, l2);                return l1;            } else {                l2->next = mergeTwoLists(l1, l2->next);                return l2;            }        }        ListNode* mergeKLists(vector<ListNode*>& lists) {            if (lists.empty()) return NULL;            while (lists.size() > 1) {                lists[0] = mergeTwoLists(lists[0], lists.back());                lists.pop_back();  // merge the first and the last, use pop_back()            }            return lists[0];        }    };    int main () {        return 0;    }
0 0
原创粉丝点击