首页 > 其他 > 详细

Merge k Sorted Lists

时间:2020-08-26 11:13:53      阅读:67      评论:0      收藏:0      [点我收藏+]

Given an array of linked-lists lists, each linked list is sorted in ascending order.

Merge all the linked-lists into one sort linked-list and return it.

 

Example 1:

Input: lists = [[1,4,5],[1,3,4],[2,6]]
Output: [1,1,2,3,4,4,5,6]
Explanation: The linked-lists are:
[
1->4->5,
1->3->4,
2->6
]
merging them into one sorted list:
1->1->2->3->4->4->5->6
Example 2:

Input: lists = []
Output: []
Example 3:

Input: lists = [[]]
Output: []
 

Constraints:

k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i] is sorted in ascending order.
The sum of lists[i].length won‘t exceed 10^4.

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode *a,ListNode *b)
    {
        if((!a) || (!b)) return a? a:b;
        ListNode head,*tail = &head,*pa =a,*pb =b;
        while(pa && pb)
        {
            if(pa->val <pb->val)
            {
                tail->next =pa;
                pa =pa->next;
            }
            else
            {
                tail->next =pb;
                pb =pb->next;
            }
            tail=tail->next;
        }
        tail->next =(pa? pa:pb);
        return head.next;
    }
    ListNode* merge(vector<ListNode*>& lists,int l,int r)
    {
        if(l == r) return lists[l];
        if(l > r) return nullptr;
        int mid = (l+r) >>1;
        return mergeTwoLists(merge(lists,l,mid),merge(lists,mid+1,r));
    }
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        return merge(lists,0,lists.size()-1);
    }
};

注意:分治法的练习使用。

 

Merge k Sorted Lists

原文:https://www.cnblogs.com/zmachine/p/13563793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!