力扣第2题-两数相加(JavaScript语言)

方法与思路:

具体不需要什么思路,如题所示。注意进位问题,最高位为有进位的话,还得算上,这里容易遗漏。

代码

var l = new ListNode(0);//注意:返回值应该为l.next
    var cur = l;//用来遍历链表
    var carry = 0;//表示进位
    while (l1 != null || l2 != null) {
        let sum = 0;
        if (l1 != null) {
            sum += l1.val;
            l1 = l1.next;
        }
        if (l2 != null) {
            sum += l2.val;
            l2 = l2.next;
        }
        sum += carry;
        cur.next = new ListNode(sum % 10);
        cur = cur.next;
        carry = Math.floor(sum / 10);//这里和c++语言不一样,需要向下取整,注意
    }
    if (carry) {//处理[1 1 9]+[1 1 9] 这种最后还有进位的用例
        cur.next = new ListNode(carry);
    }
    return l.next;

难点

对我来说,js的单链表有些不熟。(我之前都是用的c、c++)
下面代码有助于理解题目中给出的单链表的声明与使用。
如何构建一个1->2-null的单链表:

function ListNode(val, next) {
     this.val = (val===undefined ? 0 : val)
     this.next = (next===undefined ? null : next)
     }
//注意以下方法返回的l1.val是0,是无用的
var list = new ListNode(); //l1为:ListNode { val: 0, next: null }
var cur = list; //cur为:ListNode { val: 0, next: null }   cur用来遍历

cur.next = new ListNode(1);
cur = cur.next;

cur.next = new ListNode(2);
cur = cur.next;
console.log(list);

js知识点

Math.floor(5.1234);     // 5    向下取整
Math.ceil(5.1234);     // 6     向上取整
parseInt(5.1234);      // 5     保留整数部分
Math.round(5.1234);      // 5   四舍五入
Math.round(5.6789);     // 6    四舍五入
Math.abs(-1);      // 1         取绝对值
Math.max(1,2);     // 2         返回两数中的较大者
Math.min(1,2);    // 1          返回两数中的较小者
Math.random();  //              随机数(0-1)
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

四玺

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值