码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode题解:2. 两数相加,递归,JavaScript,详细注释


    原题链接:
    https://leetcode.cn/problems/add-two-numbers/

    解题思路:

    1. 两位相加可能大于等于10,需要进位,因此使用plus存储进位到下一位的1。
    2. 利用递归,每次调用都计算l1.val + l2.val + plus之和sum,并创建一个新节点new ListNode(sum % 10),链接到新链表上。
    3. 递归需要传入当前链表的前一个节点prev,用于连接当前节点。
    /**
     * @param {ListNode} l1
     * @param {ListNode} l2
     * @return {ListNode}
     */
    var addTwoNumbers = function (l1, l2) {
      // 递归创建链表
      function recursion(
        prev, // 链表的上一个节点
        l1, // l1的当前节点
        l2, // l2的当前节点
        plus, // 是否有进位
      ) {
        // 如果l1和l2都为null,表示它们都已经加完
        if (!l1 && !l2) {
          // 查看是否还有进位需要处理,此时plus可能为1
          if (plus) {
            prev.next = new ListNode(plus)
          }
    
          // l1、l2、plus都处理完后,终止递归
          return
        }
    
        // 取l2和l2的值,如果l1或l2为null,则值设置为0
        const val1 = l1 ? l1.val : 0
        const val2 = l2 ? l2.val : 0
        // 求l1、l2、plus的值之和
        const sum = val1 + val2 + plus
        // 如果sum>=10,表示需要进位,plus为1
        plus = sum >= 10 ? 1 : 0
        // 创建当前节点,将其连接到prev.next,其值为sum%10,因为当前位只需要存储个位数
        prev.next = new ListNode(sum % 10)
    
        // 将prev、l1、l2都向后移动一位,继续递归计算下一个节点的值之和
        recursion(prev.next, l1 && l1.next, l2 && l2.next, plus)
      }
    
      // 创建一个dummy节点,作为dummy.next连接到新链表的头节点
      let dummy = new ListNode(null)
      recursion(dummy, l1, l2, 0)
    
      return dummy.next
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    mybatis复习
    C# StringBuilder 底层深入原理分析以及使用详解
    跑AI大模型的K8s与普通K8s有什么不同
    微信小程序开发系列(十八)·wxml语法·声明和绑定数据
    数据库规范化理论
    2012年认证杯SPSSPRO杯数学建模B题(第一阶段)减缓热岛效应全过程文档及程序
    ios safari 浏览器跳转页面没有自适应
    一起Talk Android吧(第五百五十四回:分享一个Retorfit使用错误的案例)
    Minio设置文件永久访问和下载
    多媒体ffmpeg学习教程
  • 原文地址:https://blog.csdn.net/chencl1986/article/details/134451458
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号