classSolution { public: /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ ListNode *mergeKLists(vector<ListNode *> &lists){ if (lists.empty()) { returnNULL; }
while (true) { int count = 0; int index = -1, tempVal = INT_MAX; for (int i = 0; i != lists.size(); ++i) { if (NULL == lists[i]) { ++count; if (count == lists.size()) { last->next = NULL; return dummy->next; } continue; }
// choose the min value in non-NULL ListNode if (NULL != lists[i] && lists[i]->val <= tempVal) { tempVal = lists[i]->val; index = i; } }
classSolution { public: /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ ListNode *mergeKLists(vector<ListNode *> &lists){ if (lists.empty()) { returnNULL; }
ListNode *head = lists[0]; for (int i = 1; i != lists.size(); ++i) { head = merge2Lists(head, lists[i]); }
classSolution { public: /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ ListNode *mergeKLists(vector<ListNode *> &lists){ if (lists.empty()) { returnNULL; }
returnhelper(lists, 0, lists.size() - 1); }
private: ListNode *helper(vector<ListNode *> &lists, int start, int end){ if (start == end) { return lists[start]; } elseif (start + 1 == end) { returnmerge2Lists(lists[start], lists[end]); }