[LeetCode-23] Merge k Sorted Lists

Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

 

嗯……没啥好说的……

 

 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             // Start typing your C/C++ solution below
13             // DO NOT write int main() function
14             ListNode* tmp_node = NULL;
15             ListNode* tar_node = NULL;
16             ListNode* new_node = NULL;
17             ListNode* result = NULL;
18             for (int i = 0; i < lists.size(); ++i) {
19                 tmp_node = lists[i];
20                 if (NULL == tmp_node) {
21                     continue;
22                 }
23                 if (NULL == result) {
24                     result = new ListNode(tmp_node->val);
25                     tmp_node = tmp_node->next;
26                 } else {
27             if (result->val > tmp_node->val) {
28                 new_node = new ListNode(tmp_node->val);
29             new_node->next = result;
30             result = new_node;
31             tmp_node = tmp_node->next;
32             }
33         }
34                 tar_node = result;
35                 while (tmp_node != NULL) {
36                     while (NULL != tar_node->next && tar_node->next->val < tmp_node->val) {
37                 tar_node = tar_node->next;
38             }
39                     if (NULL == tar_node->next) {
40                         new_node = new ListNode(tmp_node->val);
41                         tar_node->next = new_node;
42                     } else {
43                         new_node = new ListNode(tmp_node->val);
44                         new_node->next = tar_node->next;
45                         tar_node->next = new_node;
46                     }
47                     tmp_node = tmp_node->next;
48                 }
49             }
50             return result;
51 
52         }
53 };
View Code

 

posted on 2013-08-22 19:10  似溦若岚  阅读(135)  评论(0编辑  收藏  举报

导航