算法2--两数相加

devtools/2025/3/29 3:19:38/

题目描述

在这里插入图片描述

解题思路

题目说的很详细了,也就是把每个数倒序写成链表进行输入,然后让你计算两个倒序数组的和,要保证跟预期的结果一样。

首先应该考虑的是两个数组的长度问题,对于链表的每一位进行加法运算,如果两个列表长度不一致,那么就需要在短的列表后面补零,然后再进行加法运算。

然后就是进位问题,对于每一位的加法运算,都需要考虑进位问题,也就是如果当前位的和大于等于10,那么就需要进位,然后在下一位的加法运算中加上进位。这是这题的难点。

最后就是链表这一数据结构本身的要求,链表只能通过指针遍历来访问每一个节点,所以需要注意指针的指向。

开始手搓!

题目已经给了链表的定义,所以我们可以直接使用这个数据结构。题目给出的的定义如下:

python">Definition for singly-linked list.
class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = next

根据定义,我们可以通过.val获取指针所指向节点的值,通过.next获取指针所指向节点的下一个节点。

最后解题

我们可以定义一个新的链表,保存最后的运算结果;定义一个变量保存进位的值;然后通过判断链表是否结束,进行加法运算来确定新链表最新位的值和下一次的进位的值。

然后链表的指针和新链表的指针全部后移,继续循环。如果循环结束后进位不为0,那么就需要在新链表的末尾加上一个值为1的节点。

最后返回新链表的头节点。

python">class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:res = cur = ListNode()adder = 0while l1 or l2:num1 = l1.val if l1 else 0num2 = l2.val if l2 else 0cur.next = ListNode((num1+num2+adder)%10)adder = (num1+num2+adder)//10cur = cur.nextif l1: l1 = l1.nextif l2: l2 = l2.nextif adder: cur.next = ListNode(1)return res.next

尝试提交,通过,时间复杂度为O(Max(N,M)),其中N M为两个链表的长度。

在这里插入图片描述


http://www.ppmy.cn/devtools/169133.html

相关文章

Java IO流汇总

Java IO(输入/输出)流用于处理数据的输入与输出。在Java中,IO流主要分为字节流和字符流,它们又可进一步细分为输入流和输出流。 1. IO流的分类 Java IO流的主要类别如下: 1.1 按数据单位分类 字节流(Str…

KNN算法

一、KNN算法介绍 KNN 算法,也称 k邻近算法,是 有监督学习 中的 分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。 二、KNN算法流程 1.计算已知类别数据集中的点与当前点的距离 2.按照距离增次序排序 3.选取与当前点距离最小…

MyBatis注解方式:从CRUD到数据映射的全面解析

目录 1. MyBatis是什么?2.准备工作2.1创建工程2.2 数据准备2.3 持久层代码2.4 单元测试 3.Mybatis的增删改查操作(使用注解方式)3.1 增(insert)3.2 删(delete)3.3 改(update&#xf…

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示: 二.实施步骤: 1.DeepSeek官网创建API key: 创建成功后,会生成一个API key: 2. PyCharm工具,打开文件->设置->插件,搜索“Continue”,点击安装 3.安装完成后&…

Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式

目录 数组与数组函数office365中VLOOKUP函数的加强数组中的多条件判断FILTER函数详解用法概述函数语法 基础筛选多条件筛选进阶技巧结合动态数组 高级函数整合错误处理注意事项FILTER经典问题:一对多查询 XLOOKUP函数XLOOKUP基础用法XLOOKUP函数多条件匹配和双向查询…

Milvus WeightedRanker 对比 RRF 重排机制

省流:优先选择WeightedRanker 以rag为例,优先选择bm25全文检索,其次选择向量检索 Milvus混合搜索中的重排机制 Milvus通过hybrid_search() API启用混合搜索功能,结合复杂的重排策略来优化多个AnnSearchRequest实例的搜索结果。本主题涵盖了重排过程,…

C++之模板二番战

本节我们将要介绍模板的深入知识。 文章目录 前言 一、非类型模板参数 1.1 非类型模板参数的特点 1.2 非类型模板参数的使用场景 1.3 非类型模板参数的使用实例 二、模板特例化 2.1 模板特例化的概念 2.2 函数模板特例化 2.3 函数模板特例化规则 2.4 完全特例化和偏特…

对RIP协议工作原理的分析【复习篇】

路由的分类 **静态路由:**通过网络管理员手工添加的路由条目 **动态路由:**所有路由器都运行相同的路由协议,之后通过路由器之间相互沟通、交流,最终计算出前往未知网段的路由条目 根据范围分类 AS自治系统 类型描述例子IGP&…