Merge k Sorted Lists_weixin_33785108的博客-程序员宝宝

技术标签: 数据结构与算法  

题目描述:

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

  因为之前做过Merge Two Sorted Lists,所以这道题也就显得不那么难了。

solution:

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

ListNode *mergeKLists(vector<ListNode *> &lists) {
    int n = lists.size();
    if(n == 0)
        return NULL;
    if(n == 1)
        return lists[0];
    if(n == 2)
        return mergeTwoLists(lists[0], lists[1]);
    vector<ListNode *>::iterator mid = lists.begin() + n / 2;
    vector<ListNode *> front(lists.begin(), mid);
    vector<ListNode *> back(mid, lists.end());
    return mergeTwoLists(mergeKLists(front), mergeKLists(back));
}

ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
    if(l1 == NULL)
        return l2;
    if(l2 == NULL)
        return l1;
    ListNode *head = new ListNode(0);
    ListNode *p = head;
    while (l1 != NULL && l2 != NULL)
    {
        if (l1->val < l2->val)
        {
            p->next = l1;
            l1 = l1->next;
        }
        else
        {
            p->next = l2;
            l2 = l2->next;
        }
        p = p->next;
    }
    p->next = l1 ? l1 : l2;
    return head->next;
}

参考链接:https://leetcode.com/discuss/9279/a-java-solution-based-on-priority-queue

转载于:https://www.cnblogs.com/gattaca/p/4360763.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33785108/article/details/93401718

智能推荐

(线网源)使用packstack工具实现一键部署OpenStack!_飞翔的驴的博客-程序员宝宝

1.2:实验目的- 使用 packstack 一键部署 OpenStack。- 登录OPenStack中的WEB页面进行操作

Android网络判断是否连接和网络类型_fastrack_0706的博客-程序员宝宝

import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.Network

Android应用程序级全局变量Application_greatriver007的博客-程序员宝宝

在Android中,我们可以通过继承Application类来实现应用程序级的全局变量,这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。我们可以在Activity中使用getApplication(),方法来获得Application,它是代表我们的应用程序的类,使用它可以获得当前应用的主题,资源文件中的内容等,这个类更灵活的一个特性就

算法笔记——搜索BFS/DFS_bfs与dfs的区别_理想国の糕的博客-程序员宝宝

BFS与DFS的区别BFS耗时短,但是占内存大DFS占内存小,但是耗时长一般求最小问题优先考虑BFS更加规范的大佬叙述以学霸的迷宫为例:DFS会时间超限,但是BFS没有这个问题~AC的BFS代码://1923学霸的迷宫#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;string.h&gt;#include&lt;queue&gt;using namespace std;struct Point{ int x;in

postfix安装迁移配置_weixin_33994429的博客-程序员宝宝

1、安装postfixyum-yinstallpostfix2、安装opendkim:(DomainKeys Identified Mail,域名密钥识别邮件)是一种部署在服务器上使用公钥和私钥对电子邮件进行数字签名和验证的方法。启用 DKIM 机制后,服务器发出的邮件就可以被确切地确认来源从而防止别人伪造冒用自己的域名发送电子邮件。这也可以减少所发邮件被识别为垃圾邮件...

geotools :Failed to connect to the EPSG database_gt-epsg-hsql.jar_Lee_2019的博客-程序员宝宝

从类路径中删除gt-epsg-postgresql-11.0.jar,保留gt-epsg-hsql-11.0.jar。亲测可用

随便推点

用switch case语句写考生成绩等级判断代码:_case语句怎么加成绩范围_林之.的博客-程序员宝宝

用switch case语句写考生成绩等级判断代码: public class A{ public static void main(String [] args){ /* 需求: 有效成绩范围:[0-100] 考试成绩可能带有小数

kotlin爬虫——利用lambda减少代码重用_kotlin 爬虫_华盛顿精神科医生的博客-程序员宝宝

kotlin爬虫——利用lambda减少代码重用kotlin中很多的语句结构都是表达式,比如try{ … }catch(){ … }、if … else …在书写上比Java简单许多。Java的句法较为啰嗦,在制作爬虫程序时远不如Python和nodejs简单。在爬虫程序中,nodejs和Python有健全的库,如node的puppeteer模块,可以爬取动态网页。相比之下,Java就显得十分费力。kotlin吸收的许多语言的语法糖,而kotlin的lambda表达式有点类似Js的回调函数,使得写法上比

前端开发者必备的nginx知识_ConardLi的博客-程序员宝宝

nginx在应用程序中的作用解决跨域请求过滤配置gzip负载均衡静态资源服务器nginx是一个高性能的HTTP和反向代理服务器,也是一个通用的TCP/UDP代理服务器,最初由俄罗斯人Igor Sysoev编写。nginx现在几乎是众多大型网站的必用技术,大多数情况下,我们不需要亲自去配置它,但是了解它在应用程序中所担任的角色,以及如何解决这些问题是非常必要的。下面我将从ng...

HttpWebRequest 二三事_weixin_30402343的博客-程序员宝宝

随着REST风格的流行,直接通过 HttpWebRequest 进行服务调用的客户端应用越来越多。这里总结一些可能需要费时调查的经验,希望能帮助大家。 1. 用完的HttpWebRequest要Abort()或者要把 Response.Close() 否则会导致请求Timeout。 (HttpWebRequest.Method默认是GET)[c-sharp] view ...

Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】_WUWEILINCX123890的博客-程序员宝宝

类和对象(简单的了解一下这个概念,初步有个印象,这个概念很重要,后面会着重讲)类:具有相同属性和方法的对象的集合; 对象:万物皆对象;概念很抽象(每当我看不到概念的时候,我就会通过举例来理解)我们说的数字(int)、字符串(str)以及今天学习的列表(list)就是类list # 类listli = ['xhg',123,[33,'小伙郭...

Fragment中 EditText 单击无法弹出软键盘_editview 键盘弹出无法被弹起_Chelsea0522的博客-程序员宝宝

先说一下怎么出现的这个问题,Fragment中嵌套Fragment,最里面布局如下图。首次打开正常,当滑动列表后。发现Edittext无法弹出软键盘由于是在Fragment中的Fragment,各种软键盘回调均不好使。先说解决办法:重写edittext控件,对其touch事件进行重写public class LXTouchEditText extends android.support.v7.widget.AppCompatEditText { public LXTouchEditTex