LeetCode (力扣) 23. Merge k Sorted Lists (C) - Hard

[LeetCode]C语言-Merge k Sorted Lists-程序优化之路 这道题要求将k个已排序的链表合并,刚开始看到这个题,首先想到是它上一个题将两个有序链表合并(主要通过一个while循环判断两个链表元素值中哪个大,然后就链接那个链表元素),我接着想直接定义一个链表让它与每一个链表通过调用函数合并,最后就能得到结果。224msstruct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2... 阅读详情

同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

这题是 LeetCode 21. Merge Two Sorted Lists 的延伸,把两个链表 ( Linked List ) 增加到多个。

把多个链表 ( Linked List ) 依照大小排序,串接在一起,并回传串接完的 Linked List。

题目与范例如下

You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.

Merge all the linked-lists into one sorted linked-list and return it.


Example 1:

Input: lists = [[1,4,5],[1,3,4],[2,6]]
Output: [1,1,2,3,4,4,5,6]
Explanation: The linked-lists are:
[
1->4->5,
1->3->4,
2->6
]
merging them into one sorted list:
1->1->2->3->4->4->5->6
Example 2:

Input: lists = []
Output: []
Example 3:

Input: lists = [[]]
Output: []

Constraints:

k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i] is sorted in ascending order.
The sum of lists[i].length won't exceed 10^4


一开始我的想法是用回圈每次找到最小的依序放入第一个链表 ( Linked List ) 中,但这个方法速度很慢,测试时大约花了312 ms 的时间,后来我改用插入排序法的概念,依序读每个链表 ( Linked List ) 中的值,一个个透过插入排序法插入链表 ( Linked List ) 中对应大小的位置,速度有着明显的提升。

下方为我的代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {

	if (listsSize == 0)
		return NULL;
	for (int i = 1; i < listsSize; i++) {
		struct ListNode* ptrnow = lists[0], * ptrpost = lists[0];
		while (lists[i] != NULL) {
			if (ptrnow == NULL) {
				struct ListNode* temp = lists[i];
				lists[i] = lists[i]->next;
				temp->next = ptrnow;
				if (ptrpost != NULL) {
					ptrpost->next = temp;
					ptrpost = ptrpost->next;
				}
				else {
					lists[0] = temp;
					ptrpost = lists[0];
				}
			}
			else if (lists[i]->val < ptrnow->val) {
				struct ListNode* temp = lists[i];
				lists[i] = lists[i]->next;
				temp->next = ptrnow;
				if (ptrnow == lists[0]) {
					lists[0] = temp;
					ptrpost = lists[0];
				}
				else {
					ptrpost->next = temp;
					ptrpost = temp;
				}
			}
			else {
				if (ptrnow != lists[0]) {
					ptrpost = ptrpost->next;
				}
				ptrnow = ptrnow->next;
			}
		}
	}

	return lists[0];
}

下方为时间与空间之消耗

Runtime: 220 ms, faster than 60.37% of C online submissions for Merge k Sorted Lists.

Memory Usage: 8.1 MB, less than 96.50% of C online submissions for Merge k Sorted Lists.

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

相关推荐

树莓派4B+红外传感器:手把手教你DIY一个能走黑线的智能小车(Python代码全解析)

本文详细介绍了如何使用树莓派4B和红外传感器DIY一个智能循迹小车,包括硬件配置、GPIO连接、Python代码实现及优化算法。通过动态PWM调速、状态机设计和赛道记忆算法,提升小车的循迹性能和稳定性。适合初学者和电子爱好者动手实践。

weixin_29188043的博客 266

23. Merge k Sorted Lists

题目: You are given an array ofklinked-listslists, each linked-list is sorted in ascending order. Merge all the linked-lists into one sorted linked-list and return it. Example 1: Input: lists = [[1,4,5],[1,3,4],[2,6]] Output: [1,1,2,3,4,4,5,6] Exp...

weixin_49991368的博客 241

交换机基本介绍(分类、性能指标、硬件构成及工作方式)

一、交换机的分类与性能指标 1.1交换机的分类 按照网络构成方式来分的话,交换机分为三类:接入层交换机、汇聚层交换机和核心层交换机。 按照OSI模型来划分的话,分为:二层交换机、三层交换机和四层交换机 还有一种按照硬件形态来划分,可以分成两类:盒式交换机和机框式交换机。 盒式交换机是一种有固定端口数,有时也会带有少量扩展槽的交换机。机架式交换机是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,可支持更大端口密度的网络。一般在数据中心的接入层都会采用盒式交换机,盒式...

monologuezjp的博客 4万+

LeetCode 23 Merge k Sorted Lists (C,C++,Java,Python)

Problem: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Solution: 采用胜者树的方法,胜者树介绍:胜者树,假如链表数组长度为n,链表元素总个数为k,那么时间复杂度为O(k*log(n)) 题目大意:

算法之道 1611

现控报告-- 分析倒立摆系统稳定性、能控性及能观性分析,设计PID控制方案(附matlab)

建立直线一级倒立摆系统的动力学模型,推导该系统的运动方程,求出直线一级倒立摆系统传递函数模型及空间状态方程模型。接着描述了PID控制系统设计原理及PID控制器各校正环节的作用,简要叙述了参数的整定方法。设计了直线一级倒立摆摆杆摆角及小车位置常规单回路控制器,通过Simulink仿真知道常规单回路控制器能控制摆杆摆角,不能控制小车位置。于是设计出了直线一级倒立摆双闭环控制器及基于倒立摆系统的状态空间方程控制器,利用软件进行仿真,仿真结果表明,常规双闭环控制方案和基于状态空间方程加控制方案均能对摆杆摆角及小车位

mengshenglo的博客 4万+

Redis架构演进:从主从、哨兵到集群,如何支撑亿级流量的秒杀场景?

本文深入探讨了分布式缓存Redis的三种核心高可用模式:主从复制、哨兵模式与集群模式。以高并发的电商秒杀业务为切入点,我们分析了每种模式的优缺点和适用场景,并最终选择Redis集群模式作为最佳解决方案。文章提供了基于Spring Boot和Spring Data Redis的完整实现代码,详细展示了如何配置和使用Redis集群来应对高并发、高可用的挑战,旨在帮助开发者在实际项目中做出正确的技术选型和架构设计。

lingRJ777的博客 723

多协议设备统一接入同一云平台:从方案设计到落地实操

物联网设备接入远比想象中复杂,MQTT、Modbus、HTTP、TCP等协议在现实场景中并存,设备厂商生态和历史遗留问题让统一接入成为刚需。解决思路是构建多协议适配框架,通过边缘网关或协议转换将异构数据转为标准格式,再汇聚到统一物联网平台。平台层提供设备管理、数据存储、规则引擎等能力,上层应用无需关心设备协议差异。在选型上,公有云IoT平台适合快速上线,私有化部署如EMQX与ThingsBoard组合更适合数据敏感和长期运营项目。本文围绕设备接入的核心痛点,梳理协议适配、平台选型、部署实操和常见问题排查,帮

weixin_34072458的博客 425

【系列05】端侧AI:构建与部署高效的本地化AI模型 第4章:模型量化(Quantization)

量化的基本思想是减少模型中用于表示参数和激活值的比特数。在模型训练时,参数通常使用32位浮点数(FP32)进行存储,这提供了高精度,但也消耗大量的内存和计算资源。量化则将这些32位浮点数转换成低比特数表示,通常是8位整数(INT8)。量化的原理可以概括为:对浮点数范围进行校准,并将其映射到更小的整数范围内。例如,将一个FP32的权重(如-1.5到1.5)映射到INT8的范围(-128到127)。在推理过程中,模型将使用这些低精度的整数进行计算,从而大大减少了所需的计算量。量化带来的主要收益减少模型大小。

学习,输出==》再学习再输出 1212

leetcode -- Merge k Sorted Lists -- 重点有trick

https://leetcode.com/problems/merge-k-sorted-lists/思路就是把所有的head节点入heap,然后把root,heappop出来。再把被pop出来的node所属于的list的下一个node入heap. 知道heap为空这里要用到heap,python中有heapq.heapify([])这个函数可以对heap进行create,从而进行操作。以及 hea

xyqzki的专栏 1092

面向高速Serdes的信号完整性优化:从封装 - 板级互连局限到封装内互连技术演进(一)

本文针对高速SerDes互连链路中的关键电磁效应展开研究:1)揭示了封装-主板互连结构在毫米波频段易激发谐振效应,导致53GHz传输陷波和阻抗偏移;2)提出基于本征模分析的谐振抑制方法,通过优化接地过孔排布使带宽突破95GHz;3)系统比较了方形/六边形BGA排布下23种差分对朝向的串扰特性,证实六边形阵列可将功率和串扰降低30%以上;4)论证了100GHz以上带宽需采用封装内互连架构,其较传统方案减少50%阻抗不连续节点。

小孟同学的博客 229

ChatGPT搭配Claude 4写文献综述效果出奇的好!四步法直接写出逻辑清晰、层次分明的文献综述(附复制即用专业提示词)

请梳理【研究领域】中核心理论的发展演进过程,包括每一阶段理论的核心观点、提出背景与推动力,并指出理论演化中的关键节点或范式转变。请根据以下文献摘要内容,帮助我梳理该主题的研究趋势,包括:常见研究视角、研究方法的演变、研究对象的变化方向等。请根据以下研究空白与我已有的研究基础,帮我生成一个清晰的研究定位,包括:研究主题、研究对象、方法路径和理论框架。先要明确这个研究领域中一个主导或热门的理论,比如社会支持理论、认知负荷理论等,强调这个理论内部的不一致性、适用性争议,通过交代这⼀争议的背景,引发读者兴趣。

智能AI让学术科研更容易 568

【LeetCode】 23. Merge k Sorted Lists C语言

LeetCode解题心得,欢迎指正! 原题:合并k个排序的链接列表并将其作为一个排序列表返回。 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeKList

godlovelong的博客 1315

<PLC><汇川>汇川PLC基于EtherCat协议使用转矩模式控制SV630N伺服驱动电机

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 4157

[LeetCode] 023. Merge k Sorted Lists (Hard) (C++/Java/Python)

[LeetCode] 023. Merge k Sorted Lists (Hard) (C++/Java/Python)

水果君の日常 3536

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Phi-2小模型设计原理与工程落地实践指南

小语言模型(SLM)正从参数压缩走向认知重构,其核心已不再是‘缩小的大模型’,而是以高质量教科书数据、任务聚焦架构和推理确定性为特征的新型AI范式。Phi-2作为典型代表,通过2.7B参数规模下的结构化知识注入、RoPE位置编码优化与AWQ量化部署,实现了在数学推理、代码生成与边缘设备运行等场景中的高精度、低延迟、可审计表现。它不追求通用对话能力,而强调在医疗合规、教育离线、工业嵌入等强约束场景中提供稳定输出,成为大模型时代下可信赖的‘能力锚点’与AI基建底座。

weixin_30328063的博客 859

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode[Linked List]: Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 一开始我没有采用分治法,解题思路是:首先比较每条链表的第一个元素,找出最小的那个,插入新链表并从原链表删除,如此反复直至所有的链表都为空链表。基于这个愚蠢的解题思路,我的C++代码实现如下:

chfe910的专栏 760

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode (力扣) 10. Regular Expression Matching ( C ) - Hard - 递归法

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 737

LeetCode (力扣) 22. Generate Parentheses (C) - Medium

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。 题目为给定一个数字 n ,列出 n 组 ( ) 的所有排列方式。 题目与范例如下 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. Example 1: Input: n = 3 Output: ["((()))","(()())","(())()...

JuzerTech的博客 369

LeetCode 1. Two Sum C 语言解题

同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。 题目为输入一串数列,要寻找两个数字相加与目标值相同的数,并回传它们的位置。 原文题目如下 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input woul

JuzerTech的博客 350

LeetCode (力扣) 20. Valid Parentheses (C) - Easy

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 293

LeetCode (力扣) 12. Integer to Roman ( C ) - Medium - 暴力解

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 244

LeetCode (力扣) 16. 3Sum Closest (C) - Medium 暴力解、双指标( Merge Sort )、双指标( Quick Sort )

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 240

LeetCode (力扣) 15. 3Sum (C) - Medium ( 排序+搜寻法 )

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 239

LeetCode (力扣) 17. Letter Combinations of a Phon (C) - Medium (递归法)

同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

JuzerTech的博客 231

LeetCode 4. Median of Two Sorted Arrays ( C ) - Hard 快速解

同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。 题目为给定两个已排序之整数数组,请撰写程式回传两数组的中位数,如中位数有两个则回传两者之平均值。 题目与范例如下 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. Example 1: Input: nums1 = [1,3],.

JuzerTech的博客 219
上一篇: LeetCode (力扣) 22. Generate Parentheses (C) - Medium
下一篇: 机器学习开发环境安装 Tensorflow 2.5.0 + Cuda 11.2 + cudnn 8.1 (windows)
JuzerTech
博客等级 码龄6年 7粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值