码迷,mamicode.com
首页 > 其他好文 > 详细

023. Merge k Sorted Lists

时间:2016-09-10 10:18:48      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

方法一:时间复杂度O(m1 + m2 + .. m2),超时

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* mergeKLists(vector<ListNode*>& lists) {
       // 注意这里的判空情况[[]]
12 // 寻找最小值节点 13 ListNode* ptr = nullptr; 14 ListNode* pHead = ptr; 15 if (lists.size() == 0) return pHead; 16 else { 17 int minIndex = -1; 18 for (int i = 0; i < lists.size(); ++i) { 19 if (lists[i] != nullptr) { 20 if (minIndex == -1) minIndex = i; 21 else { 22 if (lists[i]->val < lists[minIndex]->val) minIndex = i; 23 } 24 } 25 } 26 if (minIndex != -1) { 27 ptr = lists[minIndex]; 28 lists[minIndex] = lists[minIndex]->next; 29 } 30 //cout << ptr->val << endl; 31 pHead = ptr; // 头指针 32 bool flag = false; // 判断是否所有的点都已经排序 33 while (!flag) { 34 flag = true; 35 int index = -1; // 记录最小节点下标 36 for (int i = 0; i < lists.size(); ++i) { 37 if (lists[i] != nullptr) { 38 flag = false; 39 if (index == -1) index = i; 40 else { 41 if (lists[i]->val < lists[index]->val) index = i; 42 } 43 } 44 } 45 46 if (index != -1) { 47 //cout << lists[index]->val << endl; 48 ptr->next = lists[index]; 49 ptr = ptr->next; 50 lists[index] = lists[index]->next; 51 } 52 } 53 return pHead; 54 } 55 } 56 };

 

方法二:

023. Merge k Sorted Lists

标签:

原文地址:http://www.cnblogs.com/shadowwalker9/p/5858723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!