2. 两数相加 JavaScript实现

2. 两数相加

题目链接

一、思想

2. 两数相加 JavaScript实现_第1张图片

二、代码实现

var addTwoNumbers = function(l1, l2) {
    // 存放两数之和新的链表,定义它的头和尾
    let head = null,tail = null;
    // 定义进位carry
    let carry = 0;

    // 其中一个可能位数不够,注意进行补0操作
    while(l1 || l2){
        // 取出节点的数
        const n1 = l1 ? l1.val : 0;
        const n2 = l2 ? l2.val : 0;
        // 计算和
        let sum = n1+n2+carry;
        
        // 将结果存到新的链表中
        if(!head){
            head = tail = new ListNode(sum%10);  // 防止进位的产生,存入的是sum%10
        }else{
            tail.next = new ListNode(sum%10);  
            tail = tail.next;
        }

        // 注意进位的处理,向下取整
        carry = Math.floor(sum/10);

        // 移动指针,注意l1,l2可能为空
        if(l1) l1=l1.next;
        if(l2) l2=l2.next;    
    }
    // 当所有位数结束,还存在进位的时候,也要处理
    if(carry>0) tail.next = new ListNode(carry);
    return head;
};

你可能感兴趣的:(leetcode刷题,#,链表,#,字符串,链表,leetcode,数据结构,javascript)