LeetCode 刷题(Python) 之 合并两个有序链表

21. 合并两个有序链表-----leetcode刷题(python解题) 文章目录题目解答执行效果 题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sor... 阅读详情

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

我自己的代码如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        
        newList = ListNode(None)
        tail = None
        self.length = 0
        
        if not l1:
            return l2
        if not l2:
            return l1
        
        #print(l1.next.val)
        #print(l2.next.val)
        while l1 and l2:
            node = None
            if (l1.val < l2.val):
                node = ListNode(l1.val)
                l1 = l1.next
            else:
                node = ListNode(l2.val)
                l2 = l2.next
                
            if self.length == 0:
                newList = node
                tail = newList
            else:
                tail.next = node
                tail = node
                '''
                after = newList
                before = newList
                while before:
                    after = before
                    before = before.next
                after.next = node
                '''
            self.length += 1

        if l1: # l1 还剩有数据的话
            print("append L1")
            self.appendList(newList, l1)
            
        if l2: # l2 还剩有数据的话
            print("append L2")
            self.appendList(newList, l2)
        
        if self.length == 0:
            return []
        
        return newList
    
    def appendList(self,rList, tList):
        after = rList
        before = rList
        while before:
            after = before
            before = before.next
        while tList:
            after.next = tList
            after = tList
            tList = tList.next
            self.length += 1
        

对比了一下其中运行效率最高的一个提交代码,我写的。。呵呵,有待提交的地方还有很多

对python实现合并两个排序链表的方法详解 今天小编就为大家分享一篇对python实现合并两个排序链表的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2002

Python合并两个有序链表

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。两个链表用列表表示,即list1和list2,这既是链表名也是链表的头指针,我们可以使用双指针加循环方式,设置一个结果链表,并设置一个指针 p 指向结果链表,同时遍历两个链表比较当前俩个链表指针指向的值,若list1指向的值小,则将 p -> next 指向这个值,然后将list1指针后移一位继续比较,直到有一个链表为空,直接将另一个链表加入结果链表即可。

weixin_42533858的博客 979

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

【附源码】Python :链表合成(升序)

总而言之,每种方法都有其适用场景和优缺点。迭代和递归是最常用的方法,而双指针技术则提供了一种减少内存分配的方式。使用heapq模块的方法适合处理复杂的数据结构合并问题,而Python函数则提供了一种通用的解决方案。

脱发快乐中 1312

Prokka实战:10分钟搞定细菌基因组注释(附详细参数解析)

本文深入解析Prokka细菌基因组注释工具的核心参数与实战策略。通过拆解其集成化工作流程,详细解读物种分类、功能注释、输出控制等关键参数,并提供快速初筛、高质量发表、质粒注释及批量处理四种典型场景的高效参数组合方案,帮助用户精准掌控注释过程,将原始序列转化为有价值的生物学见解。

weixin_29271053的博客 443

VS2015编译配置GDAL(图文并茂、超详细!!!)

文章目录一、GDAL介绍二、下载GDAL三、修改源代码四、工具命令提示符操作五、编译GDAL六、安装GDAL七、在VS2015的项目中配置GDAL八、添加环境变量九、测试是否配置成功 一、GDAL介绍 GDAL(Geospatial Data Abstraction Library)是一个在XMIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。因此

weixin_46196863的博客 3757

(#数组/链表操作)合并两个有序列表(数组/链表)

本文介绍了合并两个有序数组(或链表)的双指针算法。对于数组版本,通过比较两个数组的元素,将较小值依次放入结果数组,最后处理剩余元素,时间复杂度为O(m+n)。链表版本使用虚拟头节点简化操作,同样采用双指针遍历。此外还提供了递归解法,虽然代码简洁但空间复杂度较高。文章通过扑克牌比喻和逐步可视化演示,清晰地解释了算法流程,并附有Python实现代码和详细注释。最后提及了相关的力扣题目(如88题),展示了该算法的实际应用场景。

m0_55845928的博客 803

通达信源码-主力建仓-AI投研图灵室出品

AI投研图灵室1:=3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)-2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);AI投研图灵室2W:=100-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));AI投研图灵室3:=SMA(SMA(AI投研图灵室2,3,1),3,1);

qq_57222058的博客 4390

[Leetcode]合并两个有序链表

[Leetcode]合并两个有序链表 Leetcode-合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解题思路 迭代,将较小值的节点作为下一个节点 实现代码 class Solution { public: ListNode* mergeTwoLists(ListNode* l

何猫七的博客 566

SoIC、CoWoS、InFO一次讲透:从2D/2.5D/3D看懂先进封装

先进封装是后摩尔时代提升芯片性能的关键路径,但面对SoIC、CoWoS、InFO这些名词,很多人容易混淆。理解它们,需从最基本的2D、2.5D、3D封装概念入手:2D是传统平房,2.5D通过硅中介层实现高密度互连,3D则让芯片直接堆叠。CoWoS作为2.5D中介层封装,已成为AI芯片与HBM高带宽存储集成的行业标准;SoIC通过铜-铜混合键合实现真正的3D堆叠,为逻辑与缓存提供极致带宽;InFO以扇出型封装兼顾成本与集成度,广泛用于移动SoC。在系统级封装(SiP)和CPO共封装光学等前沿趋势中,这些技术往

weixin_42388898的博客 313

微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器

对于某些用户来说,直接自定义规则可能有难度,所以在这种情况下,我们提供了网页简易模式,网页简易模式下存放了国内一些主流网站爬虫采集规则,在你需要采集相关网站时可以直接调用,节省了制作规则的时间以及精力。微信文章采集下来有很多作用,比如可以将自己行业中最近一个月之内发布的内容采集下来,然后分析文章标题和内容的一个方向与趋势。所以本次介绍八爪鱼简易采集模式下“搜狗公众号”的使用教程以及注意要点。步骤一...

weixin_26712065的博客 3259

合并两个有序链表(Python)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 -100 <= Node.val <= 100 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3: 输入:l1 = [], l2 = [0] 输出:[0] 思路一:对两个链表进行迭代,判断 l1 和 l2 哪一个链表的节点的值更小,将较小值的节点添加到结果链表里,当一个

星辰 5257

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 454

【Python】【力扣】刷题Day1——合并两个有序链表

init函数是ListNode类的构造函数,也是初始方法这个ListNode 类定义了一个单链表节点的基本结构,每个节点包含两个属性:val:存储节点的值,默认值是0。next:指向下一个节点的指针,默认值是None,表示当前节点没有下一节点。通过这个类,可以创建和操作单链表中的节点。例如,可以创建多个节点并将它们链接在一起,形成一个链表。

zyz_Kilig的博客 1571

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python小白 Leetcode刷题历程 No.21-No.25 合并两个有序链表、括号生成、合并K个排序链表、两两交换链表中的节点、K个一组翻转链表 (有题干 有代码 有思路心得)

Python小白 Leetcode刷题历程 No.21-No.25 合并两个有序链表、括号生成、合并K个排序链表、两两交换链表中的节点、K个一组翻转链表 写在前面: 作为一个计算机院的大学生,总觉得仅仅在学校粗略的学习计算机专业课是不够的,尤其是假期大量的空档期,作为一个小白,实习也莫得路子,又不想白白耗费时间。于是选择了Leetcode这个平台来刷题库。编程我只学过基础的C语言,现在...

LanXiu_的博客 659

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

leetcode—python 50天刷题 第12题 合并两个有序链表

题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists 著作...

weixin_45556991的博客 131

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

leetcode刷题python之合并两个有序链表

# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeTwoLists(self, l1: ListNode, l2: Lis...

leileii的博客 338

leetcode刷题记第21题解法(python解析)(合并两个有序链表)

leetcode刷题记--> 21题解法(python解析)题目定义解题1. 暴力解决(列表)2. 优化版,使用归并法3. 递归解决实现 题目定义 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:...

qq_42274068的博客 700

LeetCode刷题-21. 合并两个有序链表(python)

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 方法一:递归 # Definition for singly-linked list. # class ListNode: # def __...

bi_diu1368的专栏 412

力扣刷题(python)50天——第十二天:合并两个有序链表

力扣刷题(python)50天——第十二天:合并两个有序链表 题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pro...

weixin_44568780的博客 266

【Leetcode刷题Python】21. 合并两个有序链表

1 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2 解析 (1)方法一:递归 (2)方法二:迭代 3 Python实现 class Solution: # 方法一 ''' def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if l1 is None: retur

BetterBench的博客 659

力扣刷题之路 21. 合并两个有序链表 Python解

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3: 输入:l1 = [], l2 = [0] 输出:[0] 提示: 两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列 来源:力扣(LeetCo

Miku_wx的博客 401

python两个链表合并_领扣(LeetCode) 算法刷题(合并两个有序链表)

人生苦短,我用Python21.合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:刚看到这一题,我的第一想法是把链表的值都拿出来,放到一个列表里,排序后,再放入一个新的链表,就产生一个有...

weixin_42659194的博客 640

(python刷题)leetcode 第21题:合并两个有序链表

题目在leetcode上的链接为: https://leetcode-cn.com/problems/merge-two-sorted-lists/ 题目描述 解题思路 使用归并排序的合并有序数组的思路即可。 复杂度分析: 需要遍历两个链表,时间复杂度为 o(m+n) 只需要创建常数个指针变量,空间复杂度为 o(1) python代码 # Definition for singly-linked...

qq_37891889的博客 370

【Leetcode刷题】:Python:21. 合并两个有序链表

题目 21. 合并两个有序链表 代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional

Jack_Kuo的博客 262
上一篇: LeetCode 刷题(python)之 最长公共前缀
下一篇: LeetCode 刷题(Python) 之 删除排序数组中的重复项
TravisT
博客等级 码龄10年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值