【java】力扣 合并k个升序链表

news2024/12/24 20:16:27

文章目录

  • 题目链接
  • 题目描述
    • 思路
    • 代码

题目链接

23.合并k个升序链表

题目描述

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表
在这里插入图片描述

思路

我在这个题里面用到了PriorityQueue(优先队列) 的知识
PriorityQueue 和队列 Queue 的区别在于 ,它的出队顺序与元素的优先级有关

对 PriorityQueue 调用 remove() 或 poll() 方法 ,返回的总是优先级最高的元素
先让整个链表遍历,然后让PriorityQueue 返回最小值

定义一个哨兵节点dummy和合并之后的尾节点pre
开始遍历优先队列,每次取出的值与尾节点连接,然后依次循环 就得出答案了

代码

 public ListNode mergeKLists(ListNode[] lists) {
        ListNode dummy = new ListNode(-1);
        ListNode pre = dummy;
        //PriorityQueue 默认是一个【小顶堆】,可以通过传入自定义的 Comparator 函数来实现【大顶堆】
        Queue<ListNode> pq = new PriorityQueue<>((a,b) ->a.val-b.val);
        for(ListNode node : lists){
            if(node!=null){
                pq.offer(node);
            }
        }
        while(!pq.isEmpty()){
            ListNode index = pq.poll();
                pre.next = index;
                pre = index;
            if(index.next != null){
                pq.offer(index.next);
            }
        }
        return dummy.next;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙语言基础类库:【@system.app (应用上下文)】

应用上下文 说明&#xff1a; 从API Version 7 开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import app from system.app;app.getInfo …

MFC之对话框--重绘元文件

文章目录 实现示例展示需要绘制的窗口/位置控件位置更新下一次示例粗细滑动部分更新 重绘元文件&#xff08;窗口变化内容消失&#xff09;方法一&#xff1a;使用元文件方法二&#xff1a;兼容设备方法三&#xff1a;使用自定义类存储绘图数据除画笔外功能处理画笔功能处理 保…

【雷达原理】MIMO雷达技术

一、MIMO雷达原理 1.1 基本概念 多输入多输出(Multiple input multiple output&#xff0c;MIMO)雷达指该雷达具有多个发射天线和多个接收天线。 学术界对 MIMO 雷达的定义中&#xff0c;多输入是指同时发射多种雷达信号波形( 一般是多个天线同时发射不同的波形) &#xff0c;…

藏着不为人知的泪水

在娱乐圈的璀璨舞台上&#xff0c;每一个光芒四射的背后&#xff0c;藏着不为人知的汗水与泪水。提及#张艺凡 出道位#&#xff0c;这段历程&#xff0c;不仅仅是个人奋斗的见证&#xff0c;更是关于勇气、坚持与自我证明的壮丽篇章。曾几何时&#xff0c;网络的喧嚣声中&#x…

【信息系统项目管理师】高项常见知识点与公式

绩效域、合同、配置、变更、招投标、安全、立项论文考到的话大致业是按下面相关知识点开写 八大绩效域及其要点 团干部策划开公交 合同管理 合同的签订->合同的履行管理->合同的变更管理->合同的档案管理->合同的违约\索赔管理 配置管理 制定配置管理计划配置识…

欧几里得算法求解若干数的最小公倍数

公倍数 公倍数(common multiple)是指在两个或两个以上的自然数中&#xff0c;如果它们有相同的倍数&#xff0c;这些倍数就是它们的公倍数。公倍数中最小的数&#xff0c;就称为这些整数的最小公倍数&#xff08;lowest common multiple&#xff09; 求解方法 求多个数的最小公…

c++ new 与二级指针

new 与数组的简单用法&#xff0c;一个简单的例子&#xff1a; #include <stdio.h> #include <stdlib.h>#define MAX_ARRAY_NUM 10int main() {int *p new int[MAX_ARRAY_NUM];for(int i 0; i < MAX_ARRAY_NUM; i){p[i] i 10;}for(int i 0; i < MAX_AR…

MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装

1.克隆mavsdk: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译静态库 cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF 生成makefile 生成成功,开始编译 cmake --build build/default -j8 成功生成libmavsdk.a 开…

BUCK电源芯片,电气参数,极限参数,工作特性,引脚功能

概述 在应用DC-DC开关电源芯片时&#xff0c;通常需要关注以下参数&#xff0c;同步与非同步&#xff0c;输入电压&#xff0c;输入电流&#xff0c;输出电压&#xff0c;输出电流&#xff0c;输入输出电容的选择&#xff1b;mosfet选型&#xff0c;电感选型&#xff0c;功耗&a…

python作业三

1.使用requests模块获取这个json文件http://java-api.super-yx.com/html/hello.json 2.将获取到的json转为dict 3.将dict保存为hello.json文件 4.用io流写一个copy(src,dst)函数,复制hello.json到C:\hello.json import json import shutilimport requests #使用requests模块获…

RPC与服务的注册发现

文章目录 1. 什么是远程过程调用(RPC)?2. RPC的流程3. RPC实践4. RPC与REST的区别4.1 RPC与REST的相似之处4.2 RPC与REST的架构原则4.3 RPC与REST的主要区别 5. RPC与服务发现5.1 以zookeeper为服务注册中心5.2 以etcd为服务注册中心 6. 小结参考 1. 什么是远程过程调用(RPC)?…

MybatisPlus(MP)基础知识

MP BaseMapper 为了简化单表CRUD&#xff0c;MybatisPlus提供了一个基础的BaseMapper接口&#xff0c;其中已经实现了单表的CRUD&#xff0c;因此我们自定义的Mapper只要实现了这个BaseMapper&#xff0c;就无需自己实现单表CRUD了。 package com.itheima.mp.mapper;import …

基于javaScript的冒泡排序

目录 一.前言 二.设计思路和原理 三.源代码展示 四. 案例运行结果 一.前言 冒泡排序简而言之&#xff0c;就是一种算法&#xff0c;能够把一系列的数据按照一定的顺序进行排列显示&#xff08;从小到大或从大到小&#xff09;。例如能够将数组[5,4,3,2,1]中的元素按照从小到…

优选算法之双指针(上)

目录 双指针&#xff08;利用数组下标来充当指针&#xff09;&#xff1a; 一、移动零 1.题目链接&#xff1a;283.移动零 2.题目描述&#xff1a; 3.解法&#xff08;快排的思想&#xff1a;数组划分区间 - 数组分两块&#xff09; &#x1f334;算法思路&#xff1a; …

2024.7.14周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、文献解读 一、Introduction 二、KINN框架 三、主要结果 四、Conclusion 二、KAN 一、KAN与MLP区别 二、KAN网络解析 三、激活函数参数化&#xff08;B-splines&#xff09; 三、网络架构代码 摘要 本周…

Vue1-Vue核心

目录 Vue简介 官网 介绍与描述 Vue的特点 与其它 JS 框架的关联 Vue周边库 初识Vue Vue模板语法 数据绑定 el与data的两种写法 MVVM模型 数据代理 回顾Object.defineProperty方法 何为数据代理 Vue中的数据代理 数据代理图示 事件处理 事件的基本使用 事件修…

【Python 项目】类鸟群:仿真鸟群

类鸟群&#xff1a;仿真鸟群 仔细观察一群鸟或一群鱼&#xff0c;你会发现&#xff0c;虽然群体由个体生物组成&#xff0c;但该群体作为一个整体似乎有它自己的生命。鸟群中的鸟在移动、飞越和绕过障碍物时&#xff0c;彼此之间相互定位。受到打扰或惊吓时会破坏编队&#xf…

数据库管理-第218期 服务器内存(20240711)

数据库管理218期 2024-07-11 数据库管理-第218期 服务器内存&#xff08;20240711&#xff09;1 内存2 ECC内存3 原理3.1 多副本传输3.2 纠错码3.3 汉明码 总结 数据库管理-第218期 服务器内存&#xff08;20240711&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文…

TCP三次握手四次挥手原理

学习视频&#xff1a;TCP三次握手四次挥手 TCP报文格式 源端口号和目的端口号&#xff1a;同IP数据报中的源IP与目的IP唯一确定一条TCP连接 序号seq&#xff08;4字节32位&#xff09;:用来标识TCP发端向TCP收端发送的数据字节流 确认序号&#xff08;4字节32位&#xff09;&a…

5.SpringBoot核心源码-启动类源码分析

目录 概述技巧spring boot 如何启动应用程序run方法里面核心逻辑 SpringApplicaiton.run(xxx.class,args)结束 概述 SpringBoot核心源码-启动类源码分析 技巧 如何给外部源码加注释&#xff0c;想要在源码中添加自己的注释&#xff0c;会弹出 file is read only&#xff0c;代…