【数据结构与算法】力扣 23. 合并 K 个升序链表
题干描述
23. 合并 K 个升序链表
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 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 = [[]]
输出: []
提示:
k == lists.length0 <= k <= 10^40 <= lists[i].length <= 500-10^4 <= lists[i][j] <= 10^4lists[i]按 升序 排列lists[i].length的总和不超过10^4
分析解答
合并多个升序数组,乍眼一看这?我不会啊?
但如果将多个改为合并两个,想必大家都会做了。依次比较两个链表的每一个节点,把它们连接起来即可。
那么多个不会,两个一眼就能想到解决办法的这部分问题,可以采用一个通用思想:分治!
使用一个递归的 helper 帮助我们将多个链表逐步拆分为两个。两个解决了,那么 K 个也就解决了。
代码如下:
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val = (val===undefined ? 0 : val)* this.next = (next===undefined ? null : next)* }*/
function ListNode(val, next) {this.val = (val === undefined ? 0 : val)this.next = (next === undefined ? null : next)
}/*** @param {ListNode[]} lists* @return {ListNode}*/
var mergeKLists = function (lists) {if (!lists.length) return null;return mergeHelper(lists, 0, lists.length - 1);
};
const mergeHelper = (lists, left, right) => {if (left === right) return lists[left];let mid = Math.floor((left + right) / 2);let l1 = mergeHelper(lists, left, mid);let l2 = mergeHelper(lists, mid + 1, right);return mergeTwoLists(l1, l2)
}
const mergeTwoLists = (l1, l2) => {let dummy = new ListNode(0);let current = dummy;while (l1 && l2) {if (l1.val < l2.val) {current.next = l1;l1 = l1.next;} else {current.next = l2;l2 = l2.next;}current = current.next;}current.next = l1 || l2;return dummy.next;
}
思路拓展
除了分治,我们还有什么其他方法吗?
相关文章:
【数据结构与算法】力扣 23. 合并 K 个升序链表
题干描述 23. 合并 K 个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入: lists [[1,4,5],[1,3,4],[2,6]] 输出: [1,1,2,3,4,4,5,6]…...
Java Lock CountDownLatch 总结
前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & CountDownLatch & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & CountDownLatch & 总结》(学习总…...
vue+spreadjs开发
创建vue3项目 pnpm create vite --registryhttp://registry.npm.taobao.org安装spreadjs包 pnpm install "grapecity-software/spread-sheets17.1.7" "grapecity-software/spread-sheets-resources-zh17.1.7" "grapecity-software/spread-sheets-vu…...
针对初学者的PyTorch项目推荐
文章目录 1. MNIST手写数字识别2. CIFAR-10图像分类3. 图像风格迁移4. 文本生成(使用RNN)5. 简单的问答系统6. 简单的生成对抗网络(GAN)7. 简单的推荐系统 对于初学者来说,选择一些简单且具有教育意义的项目来实践PyTo…...
Helm Chart文件介绍
介绍(这个还没有完善 ,目前在找工作呢) Helm是Kubernetes的包管理器,类似于Ubuntu中的apt、CentOS中的yum或Python中的pip,可以快速查找、下载和安装软件包。Helm主要由客户端组件helm和服务端组件Tiller组成…...
1Panel 是新一代的 Linux 服务器运维管理面板
1Panel 是一款新一代的 Linux 服务器运维管理面板,旨在通过现代化的 Web 界面帮助用户轻松管理 Linux 服务器。它集成了主机监控、文件管理、数据库管理、容器管理等功能,并且支持多语言和国际化,包括英语、中文(繁体)和日语。以下是 1Panel …...
Qml-ShaderEffect的使用
Qml-ShaderEffect的使用 ShaderEffect的概述 ShaderEffect使用自定义的顶点和片段着色器用于渲染一个矩形。用于在qml场景中添加阴影、模糊、着色和页面卷曲等效果。 Qt5和Qt6中ShaderEffect有一定区别,在Qt6中由于支持不同的渲染API,ShaderEffect是用…...
鸿蒙next之axios二次封装并携带cookie
由于官方提供的ohos.net.http模块,直接使用不是很灵活,就引入了第三方ohos/axios库。 以下是引入axios并进行二次封装的步骤: 1、DevEco Studio打开终端输入命令安装插件 ohpm install ohos/axios 2、新建RequestUtil.ets import { JSON, …...
WordPress中最值得推荐的AI插件:专家级指南
WordPress平台上,人工智能(AI)技术不断发展,为用户提供了丰富的工具和功能。对于有经验的用户,这些工具不仅能提升网站性能和用户体验,还能在安全和互动方面提供更多支持。在这篇文章中,我将为大…...
HTTP介绍及请求过程
HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。以下是关于 HTTP 的详细介绍: 一、基本概念 定义与作用: HTTP 是互联网上应用最为广泛的一种网络协议,它定义了客户端和服务器之间请求和响应的标准方式。…...
WebGL进阶(五)-可视域
理论基础: 顶点着色器 Vertex Shader 主要是负责处理顶点位置、顶点颜色、顶点向量等顶点的数据;处理一些顶点的变换:例如在进行视图变换和投影变换时MVP矩阵会改变顶点的位置信息。 输入: 顶点着色器输入部分主要是声明&…...
2024性价比家居好物有哪些?推荐五款值得每个家庭拥有的好物品牌!
每年双11的时候我都特别喜欢买一些家居好物,今年双11也不例外,经过我一两周的精心挑选,专门选了五款性价比高的家居好物,接下来给大家分享一下! 家居好物一、希亦ACE Pro内衣洗衣机 我买过、评测过的内衣洗衣机&#…...
字节青训-查找热点数据问题
问题描述 给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率前 k 高的元素。请按升序排列。 1 < nums.length < 10^5k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合…...
Codeforces Round 981 (Div. 3) (A~F)
文章目录 A. Sakurako and Kosuke思路code B. Sakurako and Water思路code C. Sakurakos Field Trip思路code D. Kousukes Assignment思路code E. Sakurako, Kosuke, and the Permutation思路code F. Kosukes Sloth思路code Codeforces Round 981 (Div. 3) A. Sakurako and Ko…...
shell脚本实例(4)while实现1+...+100,linux新增用户
while实现1到100求和 #!/bin/bash/ s0 i1 #-le小于等于 while [ $i -le 100 ] dos$[ $s$i ]i$[ $i1 ] done echo $s echo $i 执行结果如下 修改用户名密码脚本 #!/bin/bash/ #提示用户输入用户名 read -p "请输入用户名:"username useradd $username #提…...
docker XML详解
下列为一个基本的运行docker镜像文件 {"Id": "62a82b0e69930e54c291095f632adde58dd0b247adba3a048385a55c87e38eba","Created": "2024-07-11T04:00:09.36091853Z","Path": "java","Args": ["-ja…...
web前端边框详解,弹性盒子的使用(仿写购物网页)
边框详解 1. 边框宽度(border - width) - 具体取值:可以是具体的长度值,如 px (像素)、 pt (点)、 em (相对单位)等。例如, border - width: 2px…...
【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)
在线投稿:学术会议-学术交流征稿-学术会议在线-艾思科蓝 2024年计算机视觉与艺术国际学术会议(CVA 2024)作为2024年人工智能、数字媒体技术与交互设计国际学术会议(ICADI 2024)的分会。此次大会旨在汇聚全球在计算机视觉与艺术…...
认识软件测试
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 1. 什么是测试? 测试在⽣活中处处可⻅ 例子: 对某款购物软件进⾏测试 启动测试:点击软件图标&#…...
poi处理excel文档时,与lombok的@Accessors(chain = true)注解冲突
poi在反射封装数据时会判断set方法的返回是不是Void,加上Accessors会造成NoSuchMethodException异常...
综述篇 | 2015-2024,情绪识别(Emotion Recognition)技术演进与核心论文全景解读
1. 情绪识别技术演进全景图(2015-2024) 十年前,当研究人员试图通过摄像头分析人脸肌肉变化来判断情绪时,准确率还停留在60%左右。如今,结合多模态数据的情绪识别系统在特定场景下已突破90%准确率。这九年间的技术跃迁可…...
深入T100系统腹地:拆解标准区、测试区与客制开发的协作逻辑
深入T100系统腹地:拆解标准区、测试区与客制开发的协作逻辑 在企业管理系统的复杂生态中,T100以其独特的四区架构和多环境协作机制,为企业的数字化转型提供了稳健的技术支撑。这套架构不仅关乎代码的流转,更是企业业务流程标准化与…...
告别GUI!用RTKLIB的rnx2rtkp命令行工具批量处理GNSS数据(附VS2019编译避坑指南)
从GUI到命令行:RTKLIB高效数据处理全攻略 在GNSS数据处理领域,RTKLIB作为开源工具链的标杆,其图形界面rtkpost虽然直观易用,但在处理大批量数据时效率低下。本文将带您深入探索命令行工具rnx2rtkp的完整工作流,从编译避…...
如何高效使用DdddOcr:免费开源的离线验证码识别终极指南
如何高效使用DdddOcr:免费开源的离线验证码识别终极指南 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 在当今数字世界中,验证码识别已成为自动化测试、数据采集和网络安全测…...
掌握高效窗口管理:专业级分辨率调整工具完全指南
掌握高效窗口管理:专业级分辨率调整工具完全指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在当今多任务处理和多屏工作环境中,你是否经常遇到窗口大小不合适、分辨率限制或游戏画面…...
信息学奥赛经典回溯:八皇后问题深度解析与OpenJudge实战
1. 八皇后问题:从棋盘游戏到算法经典 第一次接触八皇后问题时,我正在准备信息学奥赛的选拔考试。当时觉得这不过是个棋盘游戏,直到真正动手编码时,才发现其中蕴含的算法智慧远比想象中丰富。这个问题要求在一个8x8的国际象棋棋盘上…...
硬核架构拆解:指纹浏览器底座+FSM状态机,如何重塑高容错的店群RPA自动化?
大家好,我是林焱,一名专注电商底层自动化架构与定制开发的独立开发者。 在 CSDN 以及各大技术社区,我看到很多开发者在尝试为拼多多、TEMU 等电商平台编写自动化脚本时,都会经历一个“崩溃期”:明明在本地测试时无比丝…...
告别手动建造:TEdit免费地图编辑器如何10倍提升泰拉瑞亚创作效率
告别手动建造:TEdit免费地图编辑器如何10倍提升泰拉瑞亚创作效率 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also l…...
免费公式识别神器:img2latex-mathpix本地部署完全指南
免费公式识别神器:img2latex-mathpix本地部署完全指南 【免费下载链接】img2latex-mathpix Mathpix has changed their billing policy and no longer has free monthly API requests. This repo is now archived and will not receive any updates for the foresee…...
WaveTools终极指南:免费解锁鸣潮120FPS帧率限制的完整方案
WaveTools终极指南:免费解锁鸣潮120FPS帧率限制的完整方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》PC版设计的开源工具箱,通过创新技术方案帮助…...
