力扣算法学习一

133 阅读1分钟

两数相加

本题个人理解主要是进行对于链读取操作的考核还有相加进位只要注意这两个方面就可以写出本题

var addTwoNumbers = function (l1, l2) {//传入两个链表
    var l3 = new ListNode();//因为要生成新的值所以咱们创建一个新的链表
    var head = l3;//这里要找一个变量记录新创建链表的第一个位置,因为在后续循环要改变l3的指向
    var two = 0;//这个是用来记录进位的
    while (l1 || l2 || two) {//这里如果两个链表有一个存在或者还有进位的时候这时候还是要进行放入新的链表中的
        var one = 0 + two;//如果上一次有进位就加入本位数的计算
        if (two) {
            two = 0
        }
        if (l1) {
            one += l1.val
            l1 = l1.next
        }
        if (l2) {
            one += l2.val
            l2 = l2.next
        }
        two = parseInt(one / 10);//这里是计算是否有进位
        one = one % 10
        l3.val = one
        if (l1 || l2 || two) {//这里是判断是否到达最后一个节点了,要是的话就就不创建新的节点了
            l3.next = new ListNode();
            l3 = l3.next
        }
    }
    return head
};