力扣算法递归类—(链表)两数相加

news2025/4/5 23:10:09

目录

2. 两数相加

题解:

知识点:

链表定义:

链表赋值:

链表题小技巧:

代码:

结果:


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

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

你可以假设除了数字 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,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
 

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

题解:

  • 将两个链表看成是相同长度的进行遍历,一个链表较短则在前面补 0
  • 每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值
  • 如果两个链表全部遍历完毕后,进位值为 1,则在新链表最前方添加节点 1

知识点:

链表定义:

class ListNode {
    int val;
    ListNode next;

    public ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

链表赋值:

我们首先创建了一个头节点,并将其赋给变量head。然后,创建其他三个节点,并依次连接起来,形成一个链表。

// 创建头节点
ListNode head = new ListNode(0);
// 创建其他节点
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
// 连接节点
head.next = node1;
node1.next = node2;
node2.next = node3;

链表题小技巧:

对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点 head。

//定义一个新链表,这个节点在链表中作为头节点的前一个节点,用来指向头指针,返回结果
ListNode prev = new ListNode(0);
//定义一个可移动的指针,用来方便存储两个数之和
ListNode cur = prev;

使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。

所以定义一个可移动指针ListNode cur = prev;这个赋值语句中,将prev赋值给cur会导致cur和prev指向相同的内存地址,也就是它们引用了同一个ListNode对象。因此,当我们修改cur或prev引用的节点时,另一个引用也会反映出这些修改。

ListNode prev = new ListNode(0);
ListNode cur = prev;

// 修改cur引用的节点的值
cur.val = 1;

System.out.println(prev.val); // 输出: 1

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // 创建了一个新的链表节点,节点的值为0。这个节点在链表中作为头节点的前一个节点,用于方便处理链表的操作。
        ListNode prev=new ListNode(0);
        ListNode cur=prev;
        //记录进位数
        int carry=0;
        while(l1!=null||l2!=null){
            int x=l1==null?0:l1.val;
            int y=l2==null?0:l2.val;
            int sum=x+y+carry;
            carry=sum/10;
            sum=sum%10;
            cur.next=new ListNode(sum);
            cur=cur.next;
            if(l1!=null) l1=l1.next;
            if(l2!=null) l2=l2.next;
        }
        if(carry>0){
            cur.next=new ListNode(carry);
        }
        return prev.next;
    }
}

结果:

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

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

相关文章

idea 里 controller service impl mapper xml 切换跳转快捷键

首先在controller层&#xff0c;对着接口点方法的方法上按着ctrl和鼠标左键&#xff0c;你会进入service层。 对着方法ctrlaltb不按鼠标&#xff0c;你会进入impl层。service层的方法上按ctrl和鼠标左键会回到controller&#xff0c;ctrlaltb不按鼠标也会进入到impl层,impl上的…

0基础学习VR全景平台篇 第73篇:VR直播-如何自定义邀请二维码(直播邀请)

自定义直播邀请二维码是自定义直播间邀请卡上显示的二维码&#xff0c;若上传&#xff0c;那么便会替换掉邀请卡上原有的二维码&#xff0c;原二维码为本场直播活动的二维码。 建议上传的尺寸为300px*300px&#xff0c;可选择开启二维码的弹出效果&#xff0c;开启后&#xff0…

第三章 数据链路层

第三章 数据链路层 3.1 数据链路层的几个基本概念 数据发送模型 数据链路层主要的两种信号类型 点对点信号&#xff1a;这种信道使用一对一的点对点通信方式&#xff1b;广播信道&#xff1a;这种信道使用一对多的广播方式&#xff0c;因此过程比较复杂。广播信道上连接的主机…

管理类联考——写作——真题篇——论说文——企业管理=2011+2013+2014+2015+2016+2017+2020真题论说文

2020年探究的就是管理者做决策的时候&#xff0c;应该多听听专家的意见&#xff1b; 2017年探究的是企业在研发新产品和扩大生产之间的抉择问题&#xff1b; 2016年也可以看成企业的问题&#xff0c;就是企业组织的多样化和一致性。 2015年则说明企业在积累财富的过程中&#x…

又双叒叕被调查?竟是Elsevier旗下中科院TOP?如何避雷看这几个指标!

近期小编发现处于“On Hold”状态的期刊愈发的多了&#xff0c;总在不明所以的情况下&#xff0c;科睿唯安官网就将期刊拉入“审查”名单&#xff0c;包括前几天发现的同为Elsevier旗下的中科院TOP期刊Chemosphere &#xff08;&#x1f449;参考&#xff1a;慎投&#xff01;…

科技云报道:是时候全员FinOps了吗?

科技云报道原创。 在论坛上&#xff0c;国外某企业的真实案例引发了热议。一开始该企业只顾技术创新&#xff0c;积极上云&#xff0c;不顾成本。 直到有一天&#xff0c;高层介入喊停&#xff1a;“这个云不能再上了&#xff0c;成本已经远大于收益了”。该企业因为成本失控…

数据库优化器设计穿越探索之旅

作者&#xff1a;王晨(道客) 一、前言 引用来自百度百科的话术&#xff1a;在数据库技术发展历史上&#xff0c;1970 年是发生伟大转折的一年&#xff0c;因为这一年的6月&#xff0c;IBM的圣约瑟研究实验室的高级研究员Edgar Frank Codd在Communications of ACM 上发表了《A…

【JavaEE初阶】Servlet (二) Servlet中常用的API

文章目录 HttpServlet核心方法 HttpServletRequest核心方法 HttpServletResponse核心方法 Servlet中常用的API有以下三个: HttpServletHttpServletRequestHttpServletResponse HttpServlet 我们写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自 HttpServlet, 并重写其…

springboot拿到yml文件中的配置,决绝将配置写在代码里

springboot拿到yml文件中的配置 写你对应的文件 package com.gym.vueea.config;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** author ymgu* Package com.gym.vueea.config* date 2023…

230717期班5G网络优化就业班正式开班!命运的齿轮开始转动~

当前&#xff0c;无论是个人生活还是商业领域&#xff0c;5G网络已经成为了不可或缺的一部分&#xff0c;所以各位同学看好这个行业&#xff0c;在这个炎炎夏日的七月&#xff0c;经历了8天的基础班之后&#xff0c;也愿意投身到5G网络优化这个行业中&#xff0c;所以继续参与2…

logback中文一直是乱码,logback中文问号

logback一直是乱码 方案一加上UTF-8 方案二我这边方案一不行 在启动参数加上 -Dfile.encodingutf-8 这个竟然就可以了

IDEA如何快捷创建serialVersionUID【详细图解】

在Java Bean&#xff0c;快速创建serialVersionUID&#xff0c;详细操作流程如下&#xff1a; 1.File->Settings->Editor->Inspections 在搜索框里搜索 Uid,选择下图中勾选的选择 2.如何使用 双击选中需要序列化Uid的类名&#xff0c;使用Alt enter&#xff0c;快捷…

软件测试基本知识

安全测试 安全防护策略&#xff1f;&#xff08;漏洞扫描、入侵检查、安全日志、隔离防护&#xff09; 安全日志&#xff1a;用于记录非法用户的登录名称、操作时间及内容等信息&#xff0c;以便发现问题并提出解决措施&#xff1b;安全日志仅记录相关信息&#xff0c;不对非…

openssl3.1.1关于国标支持的验证笔记

openssl3.1.1关于国标支持的验证笔记 openssl的版本差异日志 openssl虽然有3个大分支&#xff0c;我们就以3.1大分支查看关于国密的差异日志。 Changes between 1.1.0i and 1.1.1 [11 Sep 2018] Changes between 1.1.1b and 1.1.1c [28 May 2019] Changes between 1.1.1k and…

kotlin 编写一个简单的天气预报app(四)

编写界面来显示返回的数据 用户友好性&#xff1a;通过界面设计和用户体验优化&#xff0c;可以使天气信息更易读、易理解和易操作。有效的界面设计可以提高用户满意度并提供更好的交互体验。 增加城市名字的TextView <TextViewandroid:id"id/textViewCityName"…

H3C B5路由器审计分析(环境准备)

H3C B5路由器 固件下载固件解压与文件提取固件仿真方式大端模式小端模式高字节和低字节高地址和低地址物联网系统常见cpu架构固件下载 固件提取的几种方式 路由器供应商官网提供固件更新,可以去官网搜索下载,如H3C B5路由: 官方固件下载地址 B5路由器属于智能终端,所以进入…

基于罪名法务智能知识图谱(含码源):基于280万罪名预测、20W法务问答与法律资讯问答功能

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

会议OA项目之会议通知(需要反馈自己的参会情况)

一.主要功能点介绍 ①显示出所有的数据&#xff08;查询所有的待开会议&#xff09; ②模糊查询&#xff08;根据会议标题&#xff09; ③附有一个是否参会的操作&#xff1a;反馈结果&#xff08;参加/不参加&#xff09;当然&#xff0c;没有阅读此消息时&#xff0c;那么就会…

【数据分享】1999—2021年地级市的科技创新相关指标(免费获取\Shp\Excel格式)

1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状况、工业企业数、固定资产投资和对外经济贸易数据&#xff08;可查看之前的文章获悉…

奇特!AI换脸让康熙本人出演电视剧;LLM超全综述资料;业内深聊游戏行业中AI应用实践;吴恩达联合Hugging Face再出新课 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; B站UP主再出「邪招」&#xff0c;让康熙本人出演电视剧名场面 B站UP主 PAC_松柏 结合康熙画像和电视剧画面&#xff0c;对视频人物角色…