题目描述 菜鸡解法 之前做过合并排序的两个链表,这道题从两个变成K个,于是想着先合并两个,再用合并过的和下一个合并,其实还没写就知道复杂度太高,但还是硬着头皮写了下来,运行,果然,击败百分之二十,菜 ListNode* mergeKLists(vector<ListNode*>& lists) { int k = lists.size(); if(k==0) return nullptr; if(k==1) return lists[0]; ListNode *node = new ListNode(INT_MIN); merge(lists,k,node); return node->next; } void merge(vector<ListNode*>& lists,int k,ListNode *&head1){ if(k==0) return; merge(lists,k-1,head1); ListNode *head2 = lists[k-1]; ListNode *cur = head1; head1 = head1->next; ListNode *Head = cur; while(head1 && head2){ if(head1->val<=head2->val){ cur->next = head1; head1 = head1->next; }else{ cur->next = head2; head2 = head2->next; } cur = cur->next; } cur->next = head1?head1:head2; head1 = Head; return; }