先贴TLE的代码。每次遍历取出最小值
/**
* @author johnsondu
* @problem Merge k Sorted Lists
* @url https://leetcode.com/problems/merge-k-sorted-lists/
* @timeComlexity O(nm) where n is maximum list length, and m is number of lists.
* @spaceComplexity O(n)
* @strategy List Insert
* @status Time Limited Error
* @time 22:41, Oct 9 2015
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode *head = new ListNode(0);
ListNode *root = head;
while(1) {
bool flag = false;
for(int i = 0; i < lists.size(); i ++)
if(lists[i] != NULL) flag = true;
if(!flag) break;
flag = false;
int cur;
int index = 0;
for(int i = 0; i < lists.size(); i ++)
{
if(lists[i]) {
if(!flag) {
flag = true;
cur = lists[i]->val;
index = i;
}
else {
if(cur > lists[i]->val) {
cur = lists[i]->val;
index = i;
}
}
}
}
ListNode *tmp = new ListNode(cur);
head->next = tmp;
head = head->next;
lists[index] = lists[index]->next;
}
return root->next;
}
};