class Solution {
public:
/**
* @param lists: a list of ListNode
* @return: The head of one sorted list.
*/
ListNode *mergeKLists(vector<ListNode *> &lists) {
// write your code here
int count = lists.size();
if(count == 0) {return NULL;}
for(int i = 1;i < count;i++) {
lists[0] = merge(lists[0],lists[i]);
}
return lists[0];
}
ListNode *merge(ListNode *a,ListNode *b) {
ListNode *dummy = new ListNode(0);
ListNode *p = dummy;
while(a != NULL && b != NULL){
if(a->val < b->val){
p->next = a;
a = a->next;
}
else{
p->next = b;
b = b->next;
}
p = p->next;
}
if(a == NULL){
p->next = b;
}
else p->next = a;
return dummy->next;
}
};
两个列表不断的合并