Open lancui1110 opened 7 years ago
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
var add = function (ln1, ln2, jin, resArr) {
if (ln1 === null && ln2 === null) {
if(jin <= 0) return
ln1 = new ListNode(0)
ln2 = new ListNode(0)
}
if (ln1 === null && ln2 !== null) ln1 = new ListNode(0)
if (ln2 === null && ln1 !== null) ln2 = new ListNode(0)
var v1 = ln1.val, v2 = ln2.val
var sum = v1 + v2 + jin, yu = sum%10
// 加入结果
jin = sum >= 10 ? 1 : 0
resArr.next = new ListNode(yu)
resArr = resArr.next
add(ln1.next, ln2.next, jin, resArr)
}
var resArr = new ListNode(0)
add(l1, l2, 0, resArr)
return resArr.next
};
//思路:依次将l1,l2的val相加,再加上来自上一位的carry, 直到l1或l2的next为0,或者carry =0 结束。 var addTwoNumbers = function (l1, l2) { let sum = 0, carry = 0; let list = new ListNode(0); let result = list while (l1||l2||carry>0){
sum=0;
if(l1!==null){
sum +=l1.val;
l1=l1.next;
}
if (l2!==null){
sum +=l2.val;
l2=l2.next;
}
sum+=carry;
carry = parseInt(sum/10);
list.next = new ListNode(sum%10); //存储结果
list = list.next;
}
return result.next
};
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.