23. 合并K个排序链表

首先实现一个归并函数merge(),然后将lists中的链表两两合并。如果lists中的链表数量为偶数n,那么合并后数量为n/2,否则为n/2+1。当合并成一个链表的时候,退出循环并返回该链表。全程lists数组被复用。

class Solution {
public:
    ListNode* mergeKLists(vector& lists) {
        if(lists.size()==0) return NULL;
        int n = lists.size();
        while(n>1){
            for(int i = 0;ival<=right->val){
                p->next=left;
                left=left->next;
            }else{
                p->next = right;
                right = right->next;
            }
            p = p->next;
        }
        if(left) p->next = left;
        if(right) p->next = right;
        return res->next;
    }
};

你可能感兴趣的:(23. 合并K个排序链表)