您的位置:首页 > 其它

【leetcode】Merge k Sorted Lists(TLE)

2015-10-09 22:42 316 查看
先贴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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: