python 链表两数相加

Python3 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字 题目: 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 ->... 阅读详情

| 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
在这里插入图片描述

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

|题解

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    """
    解题思路: 
    1.引入虚拟头节点,可以统一解决链表为空问题
    2.循环遍历两个链表, 直到有一个结束
    3.单独遍历比较长的链表
    4.返回新的链表
    """
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        # 引入虚拟头节点
        new_head1, new_head2 = ListNode(val='x'), ListNode(val='x')
        new_head1.next, new_head2.next = l1, l2
        new_l1, new_l2 = new_head1, new_head2
        new_head, tail, carry_flag = None, None, 0  # carry_flag 表示需要进位的值, new_head 新的链表的头指针, tail节点始终指向新链表的尾节点
        
        while new_l1.next is not None and new_l2.next is not None:
            sum_val = new_l1.next.val + new_l2.next.val + carry_flag
            node, carry_flag = self.get_new_node(sum_val)
            if new_head is None:   # 当新链表为空时,头指针和尾指针同时指向当前节点
                new_head, tail = node,node
            else:
                tail.next, tail = node, node # 只需移动尾节点
            new_l1 = new_l1.next
            new_l2 = new_l2.next

        while new_l1.next is not None:   # 如果new_l1的长度大于new_l2
            sum_val = new_l1.next.val + carry_flag
            node, carry_flag = self.get_new_node(sum_val)
            tail.next, tail = node, node
            new_l1 = new_l1.next
         
        while new_l2.next is not None:   # 如果new_l2的长度大于new_l1
            sum_val = new_l2.next.val + carry_flag
            node, carry_flag = self.get_new_node(sum_val)
            tail.next, tail = node, node
            new_l2 = new_l2.next
                
        if carry_flag > 0:   # 如果最后一位需要进位 如 999 + 1
            node = ListNode(carry_flag)
            tail.next, tail = node, node
        return new_head

    def get_new_node(self, sum_val):
        curret_val = sum_val % 10
        carry_flag = sum_val // 10
        node = ListNode(curret_val)
        return node, carry_flag


Python实现两个链表相加 而在链表中,两个链表的节点之和也需要通过链表形式输出。最后,当循环结束后,我们返回伪头节点的下一个节点,即为相加之和的链表。通过这段代码,我们可以简单地实现在Python中使用链表进行加法运算的功能。通过以上代码,我们可以清晰地看到,在Python中如何简单易懂地使用链表进行加法运算,为实际生产开发提供了一定的参考和借鉴。之后,在while循环中,我们判断两个链表是否为空,如果不为空,我们就分别记录它们的值,并且将它们的和与。相加(考虑进位),并计算出当前位的值和新的进位。中的每个节点,并输出节点的值。 阅读详情

相关推荐

Python实现链表相加

然后,我们使用一个循环遍历两个链表,同时对应位置的节点值相加,并计算进位值。最后,我们需要处理最高位的进位,如果进位值不为零,则创建一个新的节点,并将其连接到结果链表的末尾。链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在某些场景下,我们需要对两个链表进行相加操作,即将两个链表中对应位置的节点的值相加,并生成一个新的链表来表示相加结果。首先,我们需要定义一个链表节点的类,用于表示链表中的每个节点。接下来,我们可以定义一个函数来实现链表相加的操作。

NoerrorCode的博客 254

python实现给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假...

python实现两个非空链表相加的方法如下: 初始化一个新链表,用于存储结果。 初始化进位carry为0。 从两个链表的头部开始遍历,依次取出当前节点的值。 将两个链表当前节点的值相加,再加上carry。 如果和大于9,将carry设为1,否则设为0。 将和对10取模,将结果添加到新链表的末尾。 遍历完两个链表后,如果carry为1,再向新链表末尾添加一个1. 返回新链表的头部。 代码示例: ...

weixin_35752233的博客 383

【LeetCode 中等 链表 python3】2. 两数相加

2. 两数相加 python3 中等 链表 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 # Definition

813

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 方法: class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode

weixin_44151705的博客 3442

算法·Python链表下的两数相加

题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9

不忘初心,护天下安全! 443

【算法-链表-python】两数相加

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 2万+

Python 两数相加(链表)

将两链表分别组合成两数进行相加并进行输出

Ahjol171的博客 2101

无人驾驶--车道线检测实战(附源码)

做完项目后写了个技术小结,供自己回顾也为他人学习提供参考。 另外准备建一个无人驾驶方面的微信交流群,有兴趣的朋友可以加我微信:wxl609278502 请注明: 姓名-单位/学校 项目描述: 使用opencv实时处理车载摄像机采集的道路图像,检测当前的车道,并计算出当前车辆偏离车道中心的距离,计算当前车道的曲率。 项目代码GitHub地址:https://g...

weixin_38746685的博客 6万+

【Python】【LeetCode】【2.两数相加】【链表】

文章目录0.链表1.原文题目2.解题思路3.Python代码 0.链表 刚刚看到第二题,一脸懵的!!Python中的链表从来没接触过,数据结构的中链表好像也忘得差不多了,于是百度Google动起来,在这里推荐比较好的单链表讲解!!对链表的知识了解有限,似懂非懂,有弄错的地方希望指出。 **链表(linked list)**是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和...

奔跑的可乐猪 526

考虑风和浪的影响的旋筒帆船航线优化方法研究

针对旋筒帆船进行航线优化的实现方法,包括升阻力系数的数值模拟、升阻力系数的多元非线性回归建模、旋筒帆船6DOF摇荡运动建模分析以及考虑风、浪影响的旋筒帆船的航线优化研究。

m0_63225885的博客 1163

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 312

HoRain云--【算法-链表-python】两数相加

本文介绍了Python中解决“两数相加”问题的两种方法:迭代法和递归法。该方法适用于处理两个逆序存储的非负整数链表相加问题。迭代法通过同时遍历链表、逐位相加并处理进位,具有O(max(m,n))时间复杂度和O(1)空间复杂度。递归法则利用函数调用栈隐式处理进位,代码更简洁但空间复杂度更高。文章详细解析了两种方法的实现代码,并给出核心思路、复杂度分析及使用建议,强调需注意进位处理和链表长度不等情况。推荐优先使用迭代法,因其空间效率更优。

2401_86544677的博客 1486

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2485

LeetCode 2. 两数相加(python解法链表)

彻头彻尾弄懂 LeetCode 2. 两数相加 LeetCode此题的用python的解法并不多,像这样写的详细的也不多。 原题 https://leetcode-cn.com/problems/add-two-numbers/ 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 题解 # Definiti

qq_40630902的博客 538

高杂合度基因组组装实战:Hifiasm参数调优与purge_dups过滤效果对比(附猪毛菜案例)

本文深入探讨了高杂合度基因组组装中Hifiasm参数调优与purge_dups过滤的实战效果对比,通过猪毛菜案例详细解析了两种方法的适用场景与优化策略。文章重点分析了purge_dups在contig过滤中的显著效果,为基因组组装提供了关键的技术参考。

weixin_29232121的博客 495

多核系统核间通信(IPC)设计:从硬件机制到软件实现

在多核处理器与嵌入式系统设计中,核间通信(IPC)是实现计算资源协同工作的核心技术。其原理基于共享内存、硬件邮箱与中断等底层硬件机制,通过构建结构化的消息传递通道,实现核间高效、可靠的数据交换。该技术的核心价值在于打破多核间的壁垒,将分散的计算单元整合为有机整体,从而显著提升系统整体性能与响应能力。在工程实践中,IPC广泛应用于智能座舱、边缘AI网关、实时控制系统等场景,用于处理如仪表显示、AI推理、实时控制等复杂任务。本文聚焦于基于共享内存与VRING的消息队列实现,深入剖析缓存一致性、内存屏障等关键问题

weixin_27006759的博客 597

Python创建两链表并相加;leetcode两数求和

class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: """创建一个空链表,p、q指向头节点,q用来最后返回,p用来遍历""" p = q = ListNode(0) .

渣渣金 489

Codex 100个真实案例 - 用AI做在线考试系统(自动组卷+防作弊)

本案例使用 Codex 从零搭建一个功能完整的在线考试系统。涵盖题库管理(单选/多选/判断/填空)、智能随机组卷、考试倒计时、自动判分、成绩统计分析、以及多维度防作弊机制(切屏检测、禁止复制粘贴、IP限制等)。前端使用 Vue 3 + Element Plus 构建考试界面,后端使用 Node.js + Express + MySQL 提供 API 服务。全程用自然语言驱动 Codex 完成开发,最终交付一个可直接部署的在线考试平台。

yueyeguzhuo的专栏 81

两数相加(Python链表)

两数相加 在讲解之前,要知道的:python没有专门的指针的概念,在python中每个变量都是指针。 我的想法:查看或计算出每个链表的长度,然后通过做10n10^n10n运算,还原出这两个十进制数,然后进行相加,再求出结果的各个位后保存起来,进行输出操作。 提示:无需将原来的十进制数还原出来,而是直接在两个链表身上做运算!因为被来就是逆序存放的,所以每个链表中的第一个元素都是个位,第二个元...

渴鱼y. . 。. 1625

[EdgeAI] NXP eIQ 机器学习Toolkit (二):模型篇

eIQ™机器学习(ML)软件开发环境支持在恩智浦EdgeVerse™微控制器和微处理器(包括i.MX RT跨界MCU和i.MX系列应用处理器)上使用ML算法。eIQ ML软件包括称为eIQ Toolkit的ML工作流工具以及推理引擎、神经网络编译器和优化库。......

HowieXue 薛永浩的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python leetcode两数相加 链表(完整的本地代码,包括输入,输出)

说明:因为在leetcode做算法题时,并不需要写输入输出,但是在实际线上笔试的时候需要自己调试,这里尤其是链表的插入以及链表的输出。还有链表的定义。 完整代码如下: import sys #定义节点 class ListNode: def __init__(self, x): self.value = x self.next = None #定义链表...

ganghaodream的博客 1364

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode题库2.两数相加(链表)python详细注释

题目: 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -&gt...

zjn-ai的博客 2558

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python 反转链表、两数相加、两数之和 包括输入输出、数据结构创建

python 基础算法题完整版,包括输入输出等等:反转链表、两数相加……

w844817946的博客 306

2.两数相加(python 链表ListNode)

两数相加 难点:难点:进位的保存,next值的处理,python中链表节点值的添加方式r.next = ListNode(s%10)。 在本及pycharm上运行需要添加上ListNode函数 class ListNode(): def __init__(self, val): if isinstance(val, int): self.val = val self.next = None elif isinstanc

liqianjiqiren的博客 5786

Leetcode刷题链表之两数相加求和(java、python)

两数相加求和 1、问题描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 ...

qq_34190232的博客 820

Python刷leetcode--2.两数相加 [链表]

class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: # leetcode submit region end(Prohibit modification and deletion) ans = cur = ListNode(None) # return flag = 0 while l1 or l2 or flag:

希望能解决大家的问题,也欢迎老哥们来骚扰技术交流业务中的问题 301
上一篇: python 链表的基础概念和基础用法
下一篇: python移除链表元素
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值