链表之两数相加

news2024/11/23 4:19:46

两数相加

题目:

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

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

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例1:
在这里插入图片描述
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
在这里插入图片描述

解题思路:

我这边提供的也是一个比较常规的解法,就是逐个遍历对相应的值进行累加,主要需要考虑两种情况:
(1)两个链表长度不同,与短的链表临界节点累加后大于等于10,此时应考虑继续向后进一位;
(2)两个链表长度相同,但是倒数第二位结点之后大于等于10,最后一位节点之和等于9,此时要考虑向后进一位

代码实现:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        # 定义一个虚拟节点
        dummy = ListNode(0)
        # 定义一个游标变量
        move = dummy
        # 为了标识两个节点值除以10的商,1或0
        value=0

        # 遍历两个链表,直到一方结束
        while l1 and l2:
            value1=(l1.val+l2.val)%10 #余数
            # 大于等于10就要向后进一位
            if l1.val+l2.val>=10:
                move.next=ListNode(value1+value)
                value=1
            else:
                # 为了防止当节点值之和为9,加1后为10的情况
                if value1+value>=10:
                    move.next=ListNode(0)
                    value=1
                else:
                    move.next=ListNode(value1+value)
                    value=0
            # 记得要向后走一位
            l1=l1.next
            l2=l2.next
            move=move.next
        
        # 当两个链表长度不一致时
        new_node=l1 if l1 else l2
        while new_node:
            value2=(value+new_node.val)%10
            move.next=ListNode(value2)
            # 为了规避此种情景:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
            if value+new_node.val>=10:
                value=1
            else:
                value=0
            new_node=new_node.next
            move=move.next
        # 如果最后一位相加后也>=10,则向后再进一位
        if value==1:
            move.next=ListNode(1)
        return dummy.next

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1635222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单几步!新手开抖店如何快速上手?看这一篇就够了!

大家好,我是电商花花。 很多新手卖家在做抖音小店的时候都是0基础的小白,在开好店铺之后却不知道如何下手。 那么今天花花就来跟 大家分享一下我们是怎么做抖音小店,怎么做店铺运营的,如果你作为一个刚开店的新手,一…

Java的逻辑控制和方法的使用介绍

前言 程序的逻辑结构一共有三种:顺序结构、分支结构和循环结构。顺序结构就是按代码的顺序来执行相应的指令。这里主要讲述Java的分支结构和循环结构,由于和C语言是有相似性的,所以这里只会提及不同点和注意要点~~ 注意在C语言中,…

MobileNetV4 论文学习

论文地址:https://arxiv.org/abs/2404.10518 代码地址:https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py 解决了什么问题? 边端设备的高效神经网络不仅能带来实时交互的体验&#xff0c…

Linux服务器安全基础 - 查看入侵痕迹

1. 常见系统日志 /var/log/cron 记录了系统定时任务相关的日志 /var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 /var/log/secure:记录登录系统存取数据的文件;例如:pop3,ssh,telnet,ftp等都会记录在此. /var/log/btmp:记…

XYCTF 2024

Web 参考博客:https://www.yuque.com/yunzhiyunweiji/wrgkex/rfpnkn0293l7cp09#ezMake ezhttp Via - HTTP | MDN 代理那里难住了 XFF不给用可以用client-ip ezmd5 让我们上传图片并比较,结合题目名可以猜测应该是比较两个图片的md5值是否相同&…

实锤!腾讯终于拥抱鸿蒙生态,微信鸿蒙原生版本即将上线

大家都知道,目前已知纯血鸿蒙星河版next将于今年6月份开启Bate版本的测试,也就是说原生鸿蒙系统快上线了。而目前对于鸿蒙生态的发展,大家最关心的恐怕只有腾讯系的微信和QQ是否适配了纯血鸿蒙系统。甚至有网友表示,微信不适配鸿蒙…

上海计算机学会2020年9月月赛C++丙组T2中心对称数

题目背景 在超市里,有一些价格标签倒置后,数字竟不会发生改变。转置 180 度后不变的十进制数字被称为中心对称数(Strobogrammatic Numbers)。下图分别给出 0 到 9 这十个数字倒置后的样子: 题目描述 中心对称数是指沿…

npm 安装 pnpm 时 报错 npm ERR! Unexpected token ‘.‘

问题 一个项目用的是 pnpm 安装的依赖,node 的版本是 16.16.0,nvm 的版本是 1.1.7,然后全局安装 pnpm 报错如下: 解决 我看网上的一些解决方案是说 nvm 版本过低导致,下面我们按照这个方向处理。 实首先下载 nvm-up…

第三节课,功能2:开发后端用户的管理接口--http client -- debug测试

一、idea 中 Http client 使用 二、测试步骤,先进入主程序 2.1 先run ,再debug 2.2 再进入想要测试的代码 2.2.1 进入测试的接口 三、程序逻辑 1)用户注册逻辑:如果用户不存在再后端,看用户名&密码&校验码是…

制造企业如何打造客户服务核心竞争力?[AMT企源典型案例]

引言 产品同质化严重,竞争的焦点从产品转向服务,企业的管理模式也要相应转变。那么如何打造围绕服务的核心竞争力?相信以下案例会给大家一些启发。 项目背景: 售后服务在市场竞争中的作用凸显 A公司是一家医疗器械生产制造企业…

揭秘商业新宠——消费全返模式:深度剖析与实战策略

大家好,我是微三云周丽! 在当今竞争激烈的商业环境中,创新已成为企业生存和发展的关键。在众多新型商业模式中,消费全返模式凭借其独特的魅力,吸引了众多商家的目光。本文将从消费全返模式的定义、特点、应用场景、成…

蚂蚁集团智能凭证安全产品通过信通院能力测评,获最高评级

4月28日,中国信通院“人工智能”高质量发展研讨会在北京召开。会上,中国信通院发布“可信AI”系列评测结果。蚂蚁集团智能凭证防伪检测安全产品“蚂蚁光鉴”全项通过“可信AI-OCR服务智能化”的评估,获得最高评级(增强级&#xff…

数字电路-5路呼叫显示和8路抢答器

本内容涉及两个电路,分别为5路呼叫显示电路和8路抢答器电路,包含Multisim仿真原文件,为掌握FPGA做个铺垫。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易! 目录: 一、5路呼叫显…

Redis的事务机制能保证ACID属性吗?

目录 事务 ACID 属性 用户如何开启Redis的事务? 使用redis-cli客户端来展示 ​Go语言编码使用事务 Redis 的事务机制能保证哪些属性? 1. 原子性 语法错误 运行错误 执行EXEC时,Redis发生故障 Redis对事务原子性属性的保证情况 2. 一…

图论单源最短路径——spfa

【模板】单源最短路径(弱化版) 本题用的spfa 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到…

想要接触网络安全,应该怎么入门学习?

作为一个网络安全新手,首先你要明确以下几点: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选?这一行职业前景如何? 其次,如果你现在不清楚学什么的话&…

【GESP试卷】2024年03月Scratch二级试卷

2024年GESP03月认证Scratch二级试卷 分数:100 题数:17 一、单选题(共10题,每题3分,共30分) 1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( &…

2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包

本文来自:2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包 - 源码1688 应用介绍 简介: 2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包 自行检查后门,最好是部署智能合约后用合约地址来授权 包含转账支付页面盗U授…

[C++][算法基础]最大不相交区间数量(贪心 + 区间问题2)

给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。 输出可选取区间的最大数量。 输入格式 第一行包含整数 &#x1d4…

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板,清新风格设计,加上风为装饰元素,包含毕业相册、毕业季、毕业、同学、纪念等主题内容,也可用作毕业相册PPT、毕业季PPT、毕业P…