zoukankan      html  css  js  c++  java
  • leetcode 23. 合并K个排序链表

    题目描述:

    合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

    示例:

    输入:
    [
      1->4->5,
      1->3->4,
      2->6
    ]
    输出: 1->1->2->3->4->4->5->6

    思路分析:

    利用辅助空间求解,用最大堆来存链表中的每个节点,再一次一次从堆中取出,建表。

    需要注意输入的链表可能全为空,所以建完堆后,需要先判断一次堆是否为空,若为空,则直接输出空。

    代码:

     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)
    13             return nullptr;
    14         priority_queue<int> q;
    15         int k=lists.size();
    16         for(int i=0; i<k; i++)
    17         {
    18             ListNode* cur = lists[i];
    19             while(cur)
    20             {
    21                 q.push(cur->val);
    22                 cur = cur->next;
    23             }
    24         }
    25         if(q.empty())
    26             return nullptr;
    27         // ListNode* res = new ListNode(0);
    28         ListNode* pre = new ListNode(q.top());
    29         q.pop();
    30         while(!q.empty())
    31         {
    32             ListNode* tmp = new ListNode(q.top());
    33             q.pop();
    34             tmp->next = pre;
    35             pre = tmp;
    36         }
    37         return pre;
    38     }
    39 };
  • 相关阅读:
    url-pattern / /*匹配
    velocity入门
    配置eclipse插件
    Myeclipse 2014 破解
    Eclipse kepler 安装 Dynamic Web Project差距WTP
    Errors running builder 'Faceted Project Validation Builder' on project
    JSF web.xml的各类参数属性配置
    bpm 学习笔记一
    love is ... ...
    .sh_history文件的管理机制
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11449315.html
Copyright © 2011-2022 走看看