乐趣区

关于力扣:力扣-2-两数相加

两数相加

  1. 定义两个指针别离指向两个链表的表头
  2. 另外定义一个指针记录前两个指针相加的后果是否进制,是则加一
  3. 贮存两个指针存储的加值
  4. 逐渐相加

    const addTwoNumbers = (l1, l2) => {
     // 定义一个新链表
     const l3 = new ListNode(0);
     // 定义三个链表的指针
     let [p1, p2, p3] = [l1, l2, l3];
     // c 示意进位数,一开始为 0
     let c = 0;
     // 遍历两个链表,直到两个都为空为止
     while (p1 || p2) {
         // p1 指针以后的值
         const v1 = p1 ? p1.val : 0;
         // p2 指针以后的值
         const v2 = p2 ? p2.val : 0;
         // 将两个指针的值和进位相加
         const val = v1 + v2 + c;
         // 更新进位数
         c = Math.floor(val / 10);
         // 更新新链表下一位
         p3.next = new ListNode(val % 10);
         // 如果 p1 还有值,更新到下一位,p2 同理
         p1 = p1 ?.next;
         p2 = p2 ?.next;
         // p3 更新到下一位
         p3 = p3.next;
     }
     // 如果到最初还有进位,再新加一个节点,存储最初的进位
     if (c) p3.next = new ListNode(c);
     return l3.next;
    };
退出移动版