Adelbert 1002@ 2023-05-30 09:53 采纳率: 100%
浏览 17
已结题

js 这个问题是怎么去解决的啊

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 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]
该怎么去做啊

  • 写回答

2条回答 默认 最新

  • 0x0007 2023-05-30 10:45
    关注

    上代码:

    function addTwoNumbers(l1, l2) {
      let result = null;
      let carry = 0;
      let cur, p1 = l1, p2 = l2;
      while(p1 || p2) {
        let sum = (p1 ? p1.val : 0) + (p2 ? p2.val : 0) + carry;
        carry = Math.floor(sum / 10);
        if(!result) {
          result = new ListNode(sum % 10);
          cur = result;
        } else {
          cur.next = new ListNode(sum % 10);
          cur = cur.next;
        }
        p1 = p1 ? p1.next : null;
        p2 = p2 ? p2.next : null;
      }
      if(carry !== 0) {
        cur.next = new ListNode(carry);
      }
      return result;
    }
    
    

    假设我们已经有一个 ListNode 类型定义:

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

    使用方法:

    const l1 = new ListNode(2);
    l1.next = new ListNode(4);
    l1.next.next = new ListNode(3);
    
    const l2 = new ListNode(5);
    l2.next = new ListNode(6);
    l2.next.next = new ListNode(4);
    
    console.log(addTwoNumbers(l1, l2));
    // [7, 0, 8]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月30日

悬赏问题

  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理