ListNode* mergeKLists(vector<ListNode*>& lists) { int n = lists.size(); if(n == 0)return NULL; while(n >1) { int k = (n+1)/2; for(int i = 0; i < n/2; i++) lists[i] = merge2list(lists[i], lists[i + k]); n = k; } return lists[0]; }
ListNode *merge_k_lists(vector<ListNode *> lists) { // empty lists if (lists.size() <= 0) return NULL; if (lists.size() == 1) return lists[0]; // single list ListNode *p = lists[0]; for(int i = 1; i < lists.size(); i++) { p = merge2list(p, lists[i]); } return p; }