首页 > 其他分享 >两数相加详细解说

两数相加详细解说

时间:2024-03-21 21:24:56浏览次数:26  
标签:ListNode 相加 next 链表 l2 详细 l1 null 解说

  • 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){
    //定义一个新联表伪指针,用来指向头指针,返回结果
    ListNode prev = new ListNode(0);
    //定义一个进位数的指针,用来存储当两数之和大于10的时候,
    int carry = 0;
    //定义一个可移动的指针,用来指向存储两个数之和的位置
    ListNode cur = prev;
    //当l1 不等于null或l2 不等于空时,就进入循环
    while(l1!=null || l2!=null){
    //如果l1 不等于null时,就取他的值,等于null时,就赋值0,保持两个链表具有相同的位数
    int x= l1!=null?l1.val :0;
    //如果l1 不等于null时,就取他的值,等于null时,就赋值0,保持两个链表具有相同的位数
    int y = l2!=null?l2.val:0;
    //将两个链表的值,进行相加,并加上进位数
    int sum = x + y + carry;
    //计算进位数
    carry = sum /10;
    //计算两个数的和,此时排除超过10的请况(大于10,取余数)
    sum = sum %10;
    //将求和数赋值给新链表的节点,
    //注意这个时候不能直接将sum赋值给cur.next = sum。这时候会报,类型不匹配。
    //所以这个时候要创一个新的节点,将值赋予节点
    cur.next = new ListNode(sum);
    //将新链表的节点后移
    cur = cur.next;
    //当链表l1不等于null的时候,将l1 的节点后移
    if(l1!=null){
    l1 = l1.next;
    }
    //当链表l2 不等于null的时候,将l2的节点后移
    if(l2!=null){
    l2 = l2.next;
    }
    }
    //如果最后两个数,相加的时候有进位数的时候,就将进位数,赋予链表的新节点。
    //两数相加最多小于20,所以的值最大只能时1
    if(carry == 1){
    cur.next = new ListNode(carry);
    }
    //返回链表的头节点
    return prev.next;
    }
    }

标签:ListNode,相加,next,链表,l2,详细,l1,null,解说
From: https://www.cnblogs.com/kqdxhklm/p/18088261

相关文章

  • GraalVM详细安装及打包springboot、java、javafx使用教程(环境安装篇)
    下一篇:GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)GraalVM介绍GraalVM是一款由Oracle公司开发的一款具有高效性能、降低基础设施成本、支持Java发展、与其他编程语言无缝集成、创建本机镜像等优点的跨平台虚拟机。它支持多种编程语言,如J......
  • 关于tomcat打不开 跳出弹窗显示指定服务未安装解决方法详细流程
    关于tomcat打不开跳出弹窗显示指定服务未安装解决方法详细流程:https://blog.csdn.net/ttwxd/article/details/126771143?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171098615116777224466432%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&re......
  • 构建Python虚拟环境详细教程
    构建Python虚拟环境的详细教程如下:一、使用Anaconda创建虚拟环境打开AnacondaPrompt(在Windows上)或终端(在macOS或Linux上)。创建一个新的虚拟环境。你可以指定环境的名称和你想要使用的Python版本。例如,如果你想创建一个名为“myenv”的虚拟环境,并希望使用Python3.8,可以运行......
  • 机器学习最全详细入门指南
    Fieldofstudythatgivescomputerstheabilitytolearnwithoutbeingexplicitlyprogrammed.机器学习研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。所以,机器学习不是某种具体的算法,而是很多算法的统称。机器学习包......
  • 最详细的Catmull-Rom Spline 推导与应用
    最详细的Catmull-RomSpline推导与应用附赠最强自动驾驶学习资料:直达链接前言我们往Spline的方向深入,探究Catmull-Rom的曲线,想必研究的越深入,来到这里的人也越少。实际上,作为一个使用引擎的编程者,并不需要推导的那么深入,引擎自然有现成的实现。不过,既然已经钻研到了......
  • 最详细的Catmull-Rom Spline 推导与应用
    最详细的Catmull-RomSpline推导与应用附赠最强自动驾驶学习资料:直达链接前言我们往Spline的方向深入,探究Catmull-Rom的曲线,想必研究的越深入,来到这里的人也越少。实际上,作为一个使用引擎的编程者,并不需要推导的那么深入,引擎自然有现成的实现。不过,既然已经钻研到了这里,“......
  • VUE3 十种组件通信的方式(附详细代码)
    props用途:可以实现父子组件、子父组件、甚至兄弟组件通信父组件<template><div><Son:money="money"></Son></div></template><scriptsetuplang="ts">importSonfrom'./son.vue'import{re......
  • VUE3 ECharts5 快速上手(附详细步骤)
    安装pnpminstallecharts引入EChartsimport*asechartsfrom'echarts';设置容器注意:虽然echarts可以在配置时设置宽高,但还是推荐在配置前直接为容器设置宽高<template><divid="main"class="echart-style"></div></template><style......
  • 1+x成绩查询及职业技能等级证书下载,超详细!!!
    操作步骤点击官网链接https://vslc.ncb.edu.cn/gateway/Querydata成绩查询:证件号码和准考证号都是身份证号码证书查询:输入身份证号和准考证号,或访问【学分银行平台】进行查询:登录—我的成果—查看小提示:登录账号是身份证号,密码为身份证号后6位。......
  • HTML 最详细的课件总结
    前言:2016年7月,雅虎核心资产被美国电信巨头Verizon,以48亿美元收购。雅虎倒台后它里面的互联网人才在一小时之内被抢夺一空。当时的互联网缺口异常大。一直到近几年互联网的快速发展不断涌入了一批批新鲜血液,在由于互联网的不断壮大需要新鲜的血液注入所以这个行业一致都......