【力扣】 - 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;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘泽宇Developer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值