zoukankan      html  css  js  c++  java
  • Merge K Sorted Lists

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

    Analyse: Similiar to merge sort algorithm. Reuse the code in Merge Two Sorted Lists.

    Runtime: 408ms.

     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         if(lists.size() == 0) return NULL;
    13         if(lists.size() == 1) return lists[0];
    14         
    15         return divide(lists, 0, lists.size() - 1);
    16     }
    17     ListNode* divide(vector<ListNode*> &lists, int left, int right){
    18         if(left < right){
    19             int m = (left + right) / 2;
    20             return merge2lists(divide(lists, left, m), divide(lists, m + 1, right));
    21         }
    22         return lists[left];
    23     }
    24     ListNode *merge2lists(ListNode *l1, ListNode *l2) {
    25         ListNode pre(-1);
    26         
    27         for(ListNode* p = &pre; l1 || l2; p = p->next){
    28             int val1 = l1 == nullptr ? INT_MAX : l1->val;
    29             int val2 = l2 == nullptr ? INT_MAX : l2->val;
    30             
    31             if(val1 > val2){
    32                 p->next = l2;
    33                 l2 = l2->next;
    34             }
    35             else{
    36                 p->next = l1;
    37                 l1 = l1->next;
    38             }
    39         }
    40         return pre.next;
    41     }
    42 };
  • 相关阅读:
    C
    如何让asp.net mvc 直接运行mobile页面
    Nuget找不到服务器
    C#调用R语言输出图片
    sql列转行
    C#读取注册表
    关于这个博客,关于我
    NOIP 2016 简要题解
    CSP2019 题解
    CF 练死劲
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4665755.html
Copyright © 2011-2022 走看看