首页 > 其他分享 >13--2. 两数相加

13--2. 两数相加

时间:2023-11-21 22:34:47浏览次数:36  
标签:13 cur -- sum 相加 链表 l2 l1 节点

【首先,题目是给了两个链表,我们可以直接使用哦】

  • 我们要自己创建一个链表来存储结果
//将第一个节点的值初始化为0,用来指向头指针(意思就是pre后面的那个值才是头指针),返回结果
LinkNode pre = new LinkNode(0);
// cur是一个可移动的指针,作为储存两个数之和的位置
LinkNode cur= pre;

 

  • 定义一个记录进位值的标记,初始化为0
int carry = 0;
  • 然后开始构建新的结果链表,使用while循环,确定循环跳出的条件:
    l1 != null || l2 != null
    • 通过  l1.val  获取L1当前节点的值;通过  l2.val  获取L2当前节点的值;
    • 通过相加计算sum的值
int sum = x + y + carry;
    • 进入结果链表的赋值阶段 
      •   首先先计算进位数(更新进位数)
      •   计算sum值,就是结果链表当前位置的值,
      •   创建一个新的节点,值为当前位的值
        // 更新进位值,将当前和除以 10,得到的商作为新的进位值
         carry = sum / 10; 
        // 更新当前位的值,将当前和对 10 取余,得到的余数作为当前位的值
         sum = sum % 10; 
        // 创建一个新的节点,值为当前位的值,连接到结果链表的末尾          
         cur.next = new ListNode(sum); 
    • 此节点赋值完毕,更新cur指针,更新L1指针,更新L2指针    (while循环体内容结束)
  cur = cur.next; // 更新 cur 指针,指向新创建的节点,以便下一次迭代
  if (l1 != null)
      l1 = l1.next; // 如果 l1 还有剩余节点,将 l1 指向下一个节点
  if (l2 != null)
      l2 = l2.next; // 如果 l2 还有剩余节点,将 l2 指向下一个节点
  • 在循环体外判断最后的进位是否为1,若为1,则最后一位补1
if (carry == 1) { // 最后的进位是否为 1,如果是,创建一个新的节点,值为进位值,连接到结果链表的末尾
            cur.next = new ListNode(carry);

【补充知识:】

  1. new ListNode()中的括号里面的参数含义

         

 2、

       

 3、

        

标签:13,cur,--,sum,相加,链表,l2,l1,节点
From: https://www.cnblogs.com/18191xq/p/17847570.html

相关文章

  • 这个代码运行后打开网站一片空白怎么解决
    大家好,我是皮皮。一、前言前几天在Python白银交流群【乔.】问了一个Pythonweb开发的问题,一起来看看吧。他的报错内容如下所示:二、实现过程这里【论草莓如何成为冻干莓】给了一个思路:index.html这个文件中没有内容,只有标题。你放点内容进去就能看到内容了。经过点拨,顺利......
  • app检测
    magisk检测检测方式为:1.遍历maps文件,找到app_process模块的内存,遍历app_process内存,查找magisk和MAGISK字符串。2.从给定的变量v282开始,进行栈残留检查,从当前位置检查至栈底,查找magisk和MAGISK字符串。3.在/proc/self/mounts文件中查找magisk字符串检查模拟器检查方法为......
  • 个人征信报告修改软件工具,无密码编辑器,无痕制作pdf密码,代码分享仅供阅读学习
    正常情况我们导出的征信报告是代码密码的,或者是其他的一些PDF文件都是带密码,我们要编辑的话必须要输入密码才可以,不然只能仅仅阅读,右击编辑就会出现输入密码框,通过这个工具你可以把带有密码的PDF文档导入进来,它会自动输出到指定目录,然后就可以直接修改内容,不需要密码,注意:成品不提......
  • 前端学习-JavaScript学习-js基础05
    学习教程:黑马程序员视频链接对象了解<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docum......
  • 学C语言的第一天
     我是一名来自农村的孩子,没见过什么大世面,大学之前也没怎么接触过计算机,但是对计算机有浓厚的兴趣,我愿意去了解去学习它。 我学习C语言的主要目的也就是跟进时代,了解时代,去发现更多机会,去迎合社会需求。当我意识到土木工程就业现状之后我就考虑是否需要换一个方向去发展,就算......
  • 测试
    标题1标题2引用 代码块1代码块2 ......
  • 一套被严重低估的后端面试题库!
    在面试跳槽前,给大家整理了一份大厂加强版面试+技术资料供大家修炼。主要有Java集合、JVM、多线程、设计模式、算法调优、Spring全家桶、MyBatis、ZooKeeper、Dubbo、Elasticsearch、MongoDB、Redis、MySQL……等等包含了20个技术栈的资料合集和十多个互联网大厂的面试核心知识点、......
  • 算法的奥秘:种类、特性及应用详解(算法导论笔记1)
    原文链接算法,是计算机科学领域的灵魂,是解决问题的重要工具。在算法的世界里,有着各种各样的种类和特性。今天,我将带各位踏上一段探索算法种类的旅程,分享一些常见的算法种类,并给出相应的实践和案例分析。希望通过本文的介绍,能够帮助您更好地理解和应用这些算法,提高解决问题的能力。......
  • 贝叶斯算法
    解决问题正向概率已知数据情况,求解某事件发生的概率逆向概率未知数据情况,通过实际观测数据去预估数据情况比较符合现实情况,正向概率主要应用于解决一些重复事件的概率问题,即这一次事件的发生和下一次发生没有本质上的区别而逆向概率主要是根据已发生事件去预测未发生......
  • 算法的奥秘:常见的六种算法(算法导论笔记2)
    算法的奥秘:种类、特性及应用详解(算法导论笔记1)上期总结算法的种类和大致介绍,这一期主要讲常见的六种算法详解以及演示。排序算法:排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复杂度,有多种排序算法。常见的排序算法包括冒泡排序、选择排序、插入......