zoukankan      html  css  js  c++  java
  • [LeetCode] Merge k Sorted Lists

    Well, the idea of this problem is actually very sample --- keep merging the unmerged lists in lists until there is exactly one list remained. However, do not merge lists[0] with lists[1], lists[2], ..., lists[n - 1] sequentially since that will cause TLE. You may merge the first two lists and then push it back to lists and erase the first two to avoid repeated merging, or use some variables to control the merging process, as the following code.

     1 class Solution {
     2 public:
     3     ListNode* mergeKLists(vector<ListNode*>& lists) {
     4         if (lists.empty()) return NULL;
     5         int n = lists.size();
     6         while (n > 1) {
     7             for (int i = 0; i < n / 2; i++)
     8                 lists[i] = mergeLists(lists[i], lists[n - 1 - i]);
     9             n = (n + 1) / 2;
    10         }
    11         return lists[0];
    12     }
    13 private:
    14     ListNode* mergeLists(ListNode* head1, ListNode* head2) {
    15         ListNode* new_head = new ListNode(0);
    16         ListNode* run = new_head;
    17         ListNode* run1 = head1;
    18         ListNode* run2 = head2;
    19         while (run1 && run2) {
    20             if (run1 -> val <= run2 -> val) {
    21                 run -> next = run1;
    22                 run1 = run1 -> next;
    23             }
    24             else {
    25                 run -> next = run2;
    26                 run2 = run2 -> next;
    27             }
    28             run = run -> next;
    29         }
    30         run -> next = run1 ? run1 : run2;
    31         return new_head -> next;
    32     }
    33 };
  • 相关阅读:
    五、MapReduce 发布服务
    四、MapReduce 基础
    三、Hadoop 的 API
    二、HDFS 架构
    php身份证号的验证
    php性能优化
    PHP网站开发方案
    php一个不错的分页
    2013年最流行的php框架盘点
    程序员之路
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4623367.html
Copyright © 2011-2022 走看看