/**
* 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;
}