【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

运行结果:

相关推荐
火星机器人life36 分钟前
基于ceres优化的3d激光雷达开源算法
算法·3d
虽千万人 吾往矣1 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
一只敲代码的猪1 小时前
Llama 3 模型系列解析(一)
大数据·python·llama
Hello_WOAIAI1 小时前
批量将 Word 文件转换为 HTML:Python 实现指南
python·html·word
winfredzhang1 小时前
使用Python开发PPT图片提取与九宫格合并工具
python·powerpoint·提取·九宫格·照片
arnold661 小时前
华为OD E卷(100分)34-转盘寿司
算法·华为od
矩阵推荐官hy147622 小时前
短视频矩阵系统种类繁多,应该如何对比选择?
人工智能·python·矩阵·流量运营
ZZTC2 小时前
Floyd算法及其扩展应用
算法
测试19982 小时前
外包干了2年,技术退步明显....
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
码银2 小时前
【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
开发语言·python