【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

运行结果:

相关推荐
故事和你915 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
像污秽一样5 小时前
算法与设计与分析-习题4.2
算法·排序算法·深度优先·dfs·bfs
Storynone6 小时前
【Day20】LeetCode:39. 组合总和,40. 组合总和II,131. 分割回文串
python·算法·leetcode
小鸡吃米…6 小时前
Python—— 环境搭建
python
io_T_T6 小时前
python 文件管理库 Path 解析(详细&基础)
python
明明如月学长7 小时前
AI 更新太快学不过来?我用OpenClaw打造专属AI学习工作流
算法
黎阳之光7 小时前
【黎阳之光:以无线专网与视频孪生,赋能智慧广电与数字中国】
算法·安全·智慧城市·数字孪生
刀法如飞8 小时前
Agentic AI时代,程序员必备的算法思想指南
人工智能·算法·agent
刀法如飞8 小时前
Agentic AI时代程序员必备算法思想详解(附实战案例)
算法·ai编程·编程开发·agentic
渔阳节度使8 小时前
SpringAI实时监控+观测性
后端·python·flask