/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param lists ListNode类一维数组 * @param listsLen int lists数组长度 * @return ListNode类 */ struct ListNode* mergeKLists(struct ListNode** lists, int listsLen ) { // write code here if(listsLen<=1)return *lists; struct ListNode*le=mergeKLists(lists,listsLen>>1); struct ListNode*ri=mergeKLists(lists+(listsLen>>1),listsLen-(listsLen>>1)); struct ListNode*result=(struct ListNode*)malloc(sizeof(struct ListNode)),*templ,*tempr,*tempres=result; while(le!=NULL&&ri!=NULL) { if(le->val<ri->val)templ=le,le=le->next,tempres->next=templ; else tempr=ri,ri=ri->next,tempres->next=tempr; tempres=tempres->next; } if(ri!=NULL)tempres->next=ri; if(le!=NULL)tempres->next=le; return result->next; }