一概龄、解題思路
輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807.
- carry:記錄進制位
- 兩個鏈表指針同時移動啊奄,對應的兩數(shù)和carry相加得到sum
- parseInt(sum/10) 得到進制位carry的值
- parseInt(sum%10) 得到鏈表對應位的值
- 每一次循環(huán)結(jié)束時要將sum重置
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function (l1, l2) {
let result = new ListNode(0)
//result的操作指針
let cur = result;
let sum=0, carry = 0;
while (l1 || l2) {
//a??b a為null或undefined的時候返回b,相當于||,(思路相似)
//a?.b a為null或undefined的時候不執(zhí)行b,相當于&&,(思路相似)
l1.val = l1.val || '0';
l2.val = l2.val || '0';
sum = Number(l1.val) + Number(l2.val) + carry
carry = parseInt(sum / 10); //進制位
sum = sum % 10; //val的值
let node = new ListNode(sum);
cur.next = node;
cur = node
l1 = l1.next
l2 = l2.next
//將sum重置
sum = 0
}
return result.next
};