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

leetcode. Merge k Sorted Lists

时间:2014-12-06 17:59:16      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   sp   on   div   log   bs   

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

类似归并排序,对于lists[0, n-1],先对list[0,1], list[2, 3], ... list[n-2, n-1]排序,

然后在对生成新链表一次递归排序,需要调用两个已排序链表的merge函数。

 1 ListNode *mergeKLists(vector<ListNode *> &lists) 
 2     {
 3         if (lists.size() <= 0)
 4             return NULL;
 5         return merge_sort(lists, 0, lists.size() - 1);   
 6     }
 7     
 8     ListNode *merge_sort(vector<ListNode *> &lists, int l, int r)
 9     {
10         ListNode *head;
11         if (l < r)
12         {
13             int mid = (l + r) / 2;
14             ListNode *left, *right;
15             left = merge_sort(lists, l, mid);
16             right = merge_sort(lists, mid + 1, r);
17             head = merge(left, right);
18         }
19         else
20         {
21             head = lists[l];
22         }
23         return head;
24     }
25     
26     ListNode *merge(ListNode *l1, ListNode *l2) 
27     {
28          ListNode *dummy1 = new ListNode(INT_MIN), *dummy2 = new ListNode(INT_MIN), *p, *r;
29          dummy1->next = l1;
30          dummy2->next = l2;
31          
32          p = dummy1;
33          while (p->next != NULL && dummy2->next != NULL)
34          {
35              if (p->next->val > dummy2->next->val)
36              {
37                  r = dummy2->next;
38                  dummy2->next = r->next;
39                  r->next = p->next;
40                  p->next = r;
41              }
42              p = p->next;
43          }
44          if (dummy2->next != NULL)
45          {
46              p->next = dummy2->next;
47              dummy2->next = NULL;
48          }
49          p = dummy1->next;
50          delete dummy1;
51          delete dummy2;
52          return p;
53     }

 

leetcode. Merge k Sorted Lists

标签:des   style   blog   color   sp   on   div   log   bs   

原文地址:http://www.cnblogs.com/ym65536/p/4148442.html

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