当前位置: 首页 > news >正文

LeetCode练习30

21.合并两个有序链表

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

示例 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 均按 非递减顺序 排列
# 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[ListNode]) -> Optional[ListNode]:
        list3 = ListNode()
        p, q, j = list1, list2, list3
        if p is None:
            return list2
        elif q is None:
            return list1
        while 1:
            if p.val <= q.val:
                j.val = p.val
                p = p.next
            else:
                j.val = q.val
                q = q.next
            if p is None and q is None:
                return list3
            node = ListNode()
            j.next = node
            j = j.next
            if p is None or q is None:
                break
        if p is None and q is not None:
            while 1:
                j.val = q.val
                q = q.next
                if q is None:
                    break
                node = ListNode()
                j.next = node
                j = j.next
        else:
            while 1:
                j.val = p.val
                p = p.next
                if p is None:
                    break
                node = ListNode()
                j.next = node
                j = j.next
        return list3

总结

python中使用单链表。

python中指针指向节点,直接用“=”指向节点,而后访问域或next域。

next时,要先新建一个空节点,否则指向的是空,不能赋值。

新建节点存在默认val值0,需考虑非必要不新建节点的情况。

输出单链表,输出头节点。

optional在typing包中,它表示某个值可以是特定类型,也可以是 None

在建立新链表时,可以设置一个初始值的哨兵节点(头节点),依次将节点链接到哨兵节点上,最后输出dummy.next,即可不带头节点输出整个链表。

相关文章:

  • 用阿里云“无影”搭建《黑神话:悟空》电脑环境
  • OSPF配置学习笔记
  • vue项目实现postcss-pxtoremvue大屏适配
  • Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)
  • 【商城小程序功能概览】
  • 二十二、状态模式
  • 中国社科院-新加坡社科大学商学院联合培养管理学博士
  • 上海晋名气瓶暂存柜助力高校气瓶安全储存
  • 2024UI自动化面试题汇总【建议收藏】
  • 进阶岛 - InternVL 多模态模型部署微调实践
  • 鸿蒙--ArkTS
  • 【开发语言】编译型语言和解释性语言有啥区别?
  • 计算机存储原理——基础
  • Hadoop 中的大数据技术:Zookeeper安装 (2)
  • 国产数据库第一股|万字长文初探达梦 DM8
  • 信号发生器的运行模式有哪些(举例:泰克示波器)
  • Manim动画:相机的移动(MovingCameraScene)
  • 马走日-深度优先搜索
  • Java MessagePack序列化工具(适配Unity)
  • 动态规划(一)
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准
  • 阿森纳被打得毫无脾气,回天无力的阿尔特塔只剩嘴硬
  • 王日春已任教育部社会科学司司长,此前系人教社总编辑
  • 山东滕州车祸致6人遇难,肇事司机已被刑事拘留
  • 泽连斯基拒绝普京72小时停火提议,坚持应尽快实现30天停火