【Python刷题】合并两个有序列表

问题描述

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

示例 1:

c 复制代码
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

python 复制代码
输入:l1 = [], l2 = []
输出:[]

示例 3:

python 复制代码
输入:l1 = [], l2 = [0]
输出:[0]

解决办法

具体排序结果如上图所示,

  • 首先如果只有一条有序链表,则无序排序
python 复制代码
if list1 is None:
	return list2
if list2 is None:
   	return list1
  • 比较两个链表中数值的大小,如果链表1中的数小于链表2中对应的数,则使链表1中的这个数排在前面,这个数的next指针指向链表1中的下一个数再和链表2中的数值进行比较后的较小的值。
  • 如果链表2中的数小于链表1中的数也是一样的
  • 使用递归方法来完成合并

代码示例

python 复制代码
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        if list1 is None:
            return list2
        if list2 is None:
            return list1
        
        if list1.val <= list2.val:
            list1.next = self.mergeTwoLists(list1.next,list2)
            return list1
        else:
            list2.next = self.mergeTwoLists(list1,list2.next)
            return list2

运行结果:

相关推荐
胡耀超1 天前
7、Matplotlib、Seaborn、Plotly数据可视化与探索性分析(探索性数据分析(EDA)方法论)
python·信息可视化·plotly·数据挖掘·数据分析·matplotlib·seaborn
长安——归故李1 天前
【modbus学习】
java·c语言·c++·学习·算法·c#
tangweiguo030519871 天前
Django REST Framework 构建安卓应用后端API:从开发到部署的完整实战指南
服务器·后端·python·django
Dfreedom.1 天前
在Windows上搭建GPU版本PyTorch运行环境的详细步骤
c++·人工智能·pytorch·python·深度学习
兴科Sinco1 天前
[leetcode 1]给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数[力扣]
python·算法·leetcode
沐怡旸1 天前
【算法--链表】138.随机链表的复制--通俗讲解
算法·面试
anlogic1 天前
Java基础 9.10
java·开发语言·算法
程序员奈斯1 天前
Python深度学习:NumPy数组库
python·深度学习·numpy
薛定谔的算法1 天前
JavaScript单链表实现详解:从基础到实践
数据结构·算法·leetcode
yongche_shi1 天前
第二篇:Python“装包”与“拆包”的艺术:可迭代对象、迭代器、生成器
开发语言·python·面试·面试宝典·生成器·拆包·装包