力扣——23合并升序链表

目录

1:题目描述:

2.算法思想:

3.代码展示:

1:题目描述:

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

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[1->4->5,1->3->4,2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6

示例 2:

输入:lists = []
输出:[]

示例 3:

输入:lists = [[]]
输出:[]

2.算法思想:

  1. 义比较器​​:

    • 由于priority_queue默认是大根堆(堆顶元素最大),而我们希望每次取出最小的元素
    • 自定义比较器Compare,当l1->val > l2->val时返回true,这样构造出小根堆
  2. ​初始化优先级队列​​:

    • 创建一个存储ListNode*的小根堆pq
  3. ​将所有链表元素入队​​:

    • 遍历输入的lists数组
    • 对于每个链表,从头节点开始,将所有节点依次加入优先级队列
    • 注意:这里直接将原链表的节点拆散加入队列,会破坏原链表结构
  4. ​构建结果链表​​:

    • 创建一个虚拟头节点dummy简化操作
    • 使用指针p跟踪当前链表的末尾
    • 循环从优先级队列中取出最小元素(堆顶):
      • 将取出的节点连接到p->next
      • p移动到新连接的节点
      • 从队列中移除该节点
  5. ​返回结果​​:

    • 返回dummy.next,即合并后的链表头节点

3.代码展示:

 //因为priority_queue默认是大根堆,堆顶是最大的元素,所以我们需要自定比较器,让它从小到大class Compare {public:bool operator()(ListNode* l1, ListNode* l2) {return l1->val > l2->val;}
};ListNode* mergeKLists(vector<ListNode*>& lists) {//使用优先级队列,priority_queue<ListNode*, vector<ListNode*>, Compare>pq;//把lists的每个元素都入队for (int i = 0; i < lists.size(); i++) {while (lists[i]){pq.push(lists[i]);lists[i] = lists[i]->next;}}//重新定义一个链表ListNode dummy(-1);ListNode* p = &dummy;//始终指向最后一个元素,开始链表为空,故指向头节点//接下来开始循环pq,while (!pq.empty()){p->next = pq.top();pq.pop();p = p -> next;}return dummy.next;}

23. 合并 K 个升序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-k-sorted-lists/

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

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

相关文章

AI重构危化品进口清关:一场效率与安全的双重革命

在全球化工产业链深度捆绑的今天&#xff0c;每年超过3亿吨危险化学品通过中国各大口岸流入国内市场。这些支撑着新能源电池、半导体材料等战略产业的“工业血液”&#xff0c;其进口清关流程却长期困于效率与安全的两难困境&#xff1a;人工审核单据平均耗时72小时&#xff0c…

牛客网题解 | 栈的压入、弹出序列

栈的压入、弹出序列 一、题目链接二、题目三、算法原理&#xff1a;用一个栈模拟入栈出栈的过程四、编写代码 一、题目链接 栈的压入、弹出序列 二、题目 三、算法原理&#xff1a;用一个栈模拟入栈出栈的过程 思路&#xff1a;用一个栈模拟入栈出栈的过程&#xff0c;模拟出…

使用CubeMX新建DMA工程——存储器到存储器模式

目录 1、新建板级支持包 2、修改main.c 3、程序流程 4、问题 新建工程的基本操作步骤参考这里&#xff1a; 【【野火】STM32 HAL库开发实战指南 教学视频 手把手教学STM32全系列 零基础入门CubeMXHAL库&#xff0c;基于野火全系列STM32开发板】 https://www.bilibili.com/…

HTML5 新增的主要标签整理

一、语义化标签&#xff08;让网页结构更清晰&#xff09; 1. <header> 和 <footer> 定义&#xff1a;表示网页的「顶部区域」和「底部区域」。场景&#xff1a; <header>&#xff1a;放 Logo、导航栏、搜索框。<footer>&#xff1a;放版权信息、联系…

Mysql数据库高可用解决方案-Mysql Router

目录 一.MySQL Router介绍 1. 什么是 MySQL Router&#xff1f; 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心组件 5. MySQL Router 的部署和配置 6. MySQL Router 的优势 7. 注意事项 8. MySQL Router 与其他工具的对比 9. 总结 …

【学习笔记】机器学习(Machine Learning) | 第六周|过拟合问题

机器学习&#xff08;Machine Learning&#xff09; 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习&#xff08;Machine Learning&#xff09;简要声明 摘要过拟合与欠拟合问题一、回归问题中的过拟合1. 欠拟合&#xff08;Underfit&#x…

当算力遇上堵车:AI如何让城市血管不再“血栓”?

目录 一、算力治堵的“外科手术” 二、算力治堵的“内科检查” 三、算力治堵的“中医调理” 治堵如治水,算力是新时代的“大禹” “堵车”是每个大城市的通病,但鲜少有人意识到:交通拥堵的根源并非车辆过多,而在于车速过慢,不是因为堵车才慢,而是因为慢才堵车。中国工…

VM虚拟机安装CentOS7.9

目录 1.下载CentOS7.9 2.VM虚拟机选择自定义&#xff0c;然后一直傻瓜式下一步 3.选择编辑虚拟机设置&#xff0c;然后选择刚刚下载的ISO 4.输入 ip addr 获取ip地址 5.用Xshell连接 1.下载CentOS7.9 链接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…

文本解析到大模型应用

文本解析到到大模型应用 一、背景 最近接到一个比较恶心的工作&#xff0c;之前有个同事将很多个小的文档整合到了一个大文档中&#xff0c;同时暴露出一个新的问题&#xff0c;大的文档虽然查找问题比较方便但是维护起来较为麻烦&#xff0c;所以需要将大的文档按照标题拆分…

AWS虚拟专用网络全解析:从基础到高级实践

导语 AWS虚拟专用网络是连接企业本地数据中心与AWS云环境的关键桥梁。本文将深入探讨AWS VPN的核心概念、配置方法、最佳实践以及常见问题解决方案,助您构建安全、可靠的混合云网络架构。 一、AWS VPN概述 1. 定义 AWS VPN是一种网络服务,允许用户通过加密隧道将本地网络…

【含文档+PPT+源码】基于微信小程序的校园快递平台

项目介绍 本课程演示的是一款基于微信小程序的校园快递平台&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带…

基于 Rancher 部署 Kubernetes 集群的工程实践指南

一、现状分析 在当今的云计算和容器化领域&#xff0c;Kubernetes&#xff08;K8S&#xff09;已经成为了容器编排和管理的事实标准。根据 Gartner 的数据&#xff0c;超过 70% 的企业在生产环境中使用 K8S 来管理容器化应用。然而&#xff0c;K8S 的安装和管理对于许多企业来…

Windows服务器提权实战:常见方法、场景与防御指南

在渗透测试中&#xff0c;​​权限提升&#xff08;提权&#xff09;​​是从低权限账户&#xff08;如IIS、Apache运行账户&#xff09;获取系统管理员&#xff08;如SYSTEM&#xff09;权限的关键步骤。本文将从实战角度解析Windows服务器提权的常见技术&#xff0c;并结合真…

C# | 基于C#实现的BDS NMEA-0183数据解析上位机

以下是一个基于C#实现的BDS NMEA-0183数据解析上位机的示例代码,包含基础功能和界面: using System; using System.Collections.Generic; using System.IO.Ports; using System.Windows.Forms; using System.Drawing; using System.Globalization;namespace BDS_NMEA_Viewer…

图像增强技术:从基础原理到企业级开发实战

简介 图像增强技术是提升图像质量、改善视觉效果和提高后续处理效果的核心方法。本文将全面解析图像增强的五大核心技术:灰度级修正、图像平滑、图像锐化、图像伪彩色处理和图像几何校正,并提供基于OpenCV和Elasticmagic的完整企业级开发实战代码。通过系统化的知识整理和可…

解决中文乱码:字符编码全攻略 - ASCII、Unicode、UTF-8、GB2312详解

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

体系学习1:C语言与指针1——预定义、进制打印、传参为数组

1、不对一段代码进行编译 #if 0 statement #endif2、输出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*类型的数据3、不同进制的打印 int data 1200; char hed[9];//为\0预留位置&#xff01;&#xff01;&#xff01; sprintf(hed,"%08X&…

Java 基础--数组(Array):存储数据的“排排坐”

作者&#xff1a;IvanCodes 发布时间&#xff1a;2025年5月1日&#x1f913; 专栏&#xff1a;Java教程 大家好&#xff01;&#x1f44b; 咱们在编程时&#xff0c;经常需要处理一批相同类型的数据&#xff0c;比如班级里所有同学的成绩 &#x1f4af;、一周每天的最高气温 …

CSS常用属性_(进阶)

目录 1.尺寸单位与颜色 &#xff08;1&#xff09;尺寸 &#xff08;2&#xff09;颜色 常用2种 &#xff08;3&#xff09;颜色属性值&#xff08;透明度&#xff09; 例如&#xff1a; 2.字体属性font 例如&#xff1a; **顺序 3.文本属性 ​编辑例如&#xff1a; …

【RabbitMQ】保证消息不丢失

要确保 RabbitMQ 在消费者&#xff08;Python 服务&#xff09;重启或挂掉时消息不丢失&#xff0c;需结合 消息持久化、确认机制&#xff08;ACK&#xff09; 和 死信队列&#xff08;DLX&#xff09; 实现高可靠性&#xff1a; 1. 消息持久化&#xff08;Durability&#xff…