leetcode 23:合并K个排序链表

xiaoxiao2022-06-02  9

直接使用递归即可

ListNode *merge(std::vector<ListNode*>& lists,int s,int t){ if(s==t)return lists[s]; int m=(s+t)/2; ListNode*l=merge(lists,s,m); ListNode*r=merge(lists,m+1,t); ListNode*l1=new ListNode(0); ListNode*l2=l1; while(l!=NULL&&r!=NULL){ if(l->val<=r->val) { l1->next = new ListNode(l->val); l1=l1->next; l=l->next; } else { l1->next=new ListNode(r->val); l1=l1->next; r=r->next; } } while(l!=NULL&&r==NULL){ l1->next = new ListNode(l->val); l1=l1->next; l=l->next; } while(l==NULL&&r!=NULL){ l1->next = new ListNode(r->val); r=r->next; l1=l1->next; } return l2->next; } ListNode* mergeKLists(std::vector<ListNode*>& lists) { if(lists.size()==0)return NULL; int len=lists.size(); return merge(lists,0,len-1); }

 

转载请注明原文地址: https://www.6miu.com/read-4914549.html

最新回复(0)