LeetCode(Python)—— 合并两个有序链表(简单)

2023-11-03

合并两个有序链表

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

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

输入:l1 = [], l2 = []
输出:[]

输入:l1 = [], l2 = [0]
输出:[0]

方法一:递归

思路:如果 list1 或者 list2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 list1 list2 哪一个链表的头节点的值更小,然后递归地决定下一个添加到结果里的节点。如果两个链表有一个为空,递归结束。

# 递归
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        if not list1: return list2 # list1为空
        elif not list2: return list1 # list2为空
        elif list1.val < list2.val:
            list1.next = self.mergeTwoLists(list1.next, list2)
            return list1
        else:
            list2.next = self.mergeTwoLists(list1, list2.next)
            return list2

方法二:迭代

思路:首先,我们设定一个哨兵节点 preindex ,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 prevalue 指针,我们需要做的是调整它的 next 指针。如果 list1 当前节点的值小于等于 list2 ,我们就把 list1 当前的节点接在 prevalue 节点的后面同时将 list1 指针往后移一位。否则,我们对 list2 做同样的操作。不管我们将哪一个元素接在了后面,我们都需要把 prevalue 向后移一位。在循环终止的时候, list1 list2 至多有一个是非空的。我们只需要简单地将非空链表接在合并链表的后面,并返回合并链表即可。

# 迭代
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        preindex = prevalue = ListNode(-1)
        while list1 and list2:
            if list1.val <= list2.val:
                prevalue.next = list1
                list1 = list1.next
            else:
                prevalue.next = list2
                list2 = list2.next
            prevalue = prevalue.next
        # 合并后,剩余部分,直接指完
        prevalue.next = list1 if list1 is not None else list2
        return preindex.next

总结

一杯茶,一包烟,一道LeetCode敲一天!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode(Python)—— 合并两个有序链表(简单) 的相关文章

  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐

  • mysql order by null last_order by 语句出现null的情况

    Oracle 结论 order by colum asc 时 null默认被放在最后 order by colum desc 时 null默认被放在最前 nulls first 时 强制null放在最前 不为null的按声明顺序 asc d
  • 钢条切割问题(Java)——暴力法(Brute force)

    Rod Cutting题目 注意 本题采用txt文件读入 屏幕输出 如果需要屏幕读入屏幕输出 可以留言或者自己改代码 说明 暴力法 Brute force 列出每种切割方案 比较哪种切割方案利润最大 所需时间T O 2 n import j
  • 自己动手编译octave 4.0.0

    今天在做作业的时候 发现imread不能使用 说要安装相应的图形包 可是要安装image时 却发现要求4 0 0版本 而我本机的linux系统ubuntu15 04只有3 8 x的安装源 没办法 只能自己动手编译 安装啦 sudo apt
  • java算法-冒泡排序

    算法原理 例如我们有一个数组 我们如果需要把较大的元素排在后面 把小的元素排在前面 那么需要从头部到尾开始比较操作 依次比较相邻的两个数 如果第一个比第二个大 就交换他们两个 往后对每个相邻的元素都做这样的比较 交换操作 这样到数组尾部时
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • ip和端口号的正则表达式

    目录 前言 1 ip地址 2 端口号 3 ip 端口号 前言 ip以及端口号的正则表达式 在逻辑应用比较广泛 前置知识点 匹配开头第一个 匹配的结尾 对于更多的知识点可看我java框架 java框架零基础从入门到精通的学习路线 超全 1 i
  • C++编程之构造函数

    学习到了C 的构造函数了 之前上的课比较简单加上自己也有一定的编程基础 所以一直都没觉得有什么压力 今天的课感觉有点难了 构造函数的作用 在对象被创建时 使用特定的值构造对象 将对象初始化为一个特定的初始状态 例如 希望在构造一个Clock
  • python(matplotlib)绘制直方图及阶梯图

    直方图是python绘图中常见的图形之一 以下将介绍5种不同的直方图 然后介绍阶梯图函数以及用阶梯图绘制正弦曲线 直方图的绘制 1 利用matplotlib库文件 画出如下的显示网格线的彩色直方图 代码如下 柱状图带网格线的绘制 impor
  • 云测平台

    1 云测平台 1 进入首页点击标准兼容测试 2 接着点击开始测试 2 上传测试的应用 3 上传应用 完善信息
  • 【YOLOv7】训练自己的数据集 - 目标检测

    YOLOv7训练自己的数据集 1 准备深度学习环境 1 1 代码克隆 1 2 环境安装 1 3 权重下载 1 4 环境测试 2 准备数据 2 1 yolo格式的数据集准备 3 配置训练的相关文件 3 1 修改数据配置文件 3 2 修改模型配
  • 原码表示

    原码的本质 符号位 绝对值 我们下面分析的类型主要是分析纯小数和纯整数的情况 因为在计算机里面 实数是可以转换成下面这两种形式的 纯小数 纯整数 n 位二进制数来表示这个数的原码 符号位占一位 还剩 n 1 位数值位 n 1 位能表达的最大
  • 虚拟机VMware、linux、WSL、Dorker、Multipass选择时

    引言 家里台式机没有装完整开发环境 今天测试一个程序 需要安装个mysql 可以安装个win的mysql 附上window的mysql地址 MySQL Download MySQL Installer 也可以虚拟机里安装一个mysql 登录
  • 一些常用的公共 DNS 服务器 IP 地址

    公共 DNS 服务器 IP 地址 名称 DNS 服务器 IP 地址 阿里 AliDNS 223 5 5 5 223 6 6 6 CNNIC SDNS 1 2 4 8 210 2 4 8 114 DNS 114 114 114 114 114
  • 编写一个IDEA插件之:自动生成Java代码

    我很喜欢IDEA的一键自动生成代码功能 例如自动生成构造方法 字段的Get Set方法 ToString方法等等 除此之外 也有一些插件提供自动生成代码的功能 例如我们所熟悉的GsonFormat插件 使用该插件可以为我们快速的解析json
  • 简易unity网络游戏架构(个人理解)

    客户端架构 客户端流程 点击UI gt panel调用Request的send方法 gt 调用基类得得send gt 调用face的send方法 gt 调用clientManager的send方法 gt 调用message的包装方法 gt
  • Hexo

    前言 搭建博客两个必要条件 博客框架 托管平台 这里框架我们采用Hexo 而平台大部分人会选择GitHub 这里我选择的是Gitee 属于国内的代码托管平台 相比于GitHub来说 访问速度更快 更稳定 环境要求 Git Nodejs 安装
  • OpenAPI安全合规检查

    OpenAPI安全合规检查是指对使用OpenAPI进行接口开发的系统进行安全性和合规性检查 确保系统在设计 开发和运行过程中符合相关的安全标准和法律法规要求 它包含以下内容 访问控制 检查系统是否实现了适当的身份验证和权限管理机制 以确保只
  • 使用HTTP协议发送POST请求

    HTTP发送POST请求常用的类是HttpClientUtil类 这个类提供三个方法 分别是sendPostByForm sendPostByJson sendPostByXml sendPostByForm 处理 application
  • 预编译合约使用问题 | FISCO BCOS开发问题排查

    预编译合约是否支持event事件日志功能 目前不支持 该特性正在规划中 用户可以关注后续的更新 了解更多干货内容 请关注FISCO BCOS开源社区公众号 访问FISCO BCOS代码仓库可下载项目所有源代码 https github co
  • LeetCode(Python)—— 合并两个有序链表(简单)

    合并两个有序链表 概述 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2 1 3 4 输出 1 1 2 3 4 4 输入 l1 l2 输出 输入 l1 l2 0 输