题目 2. 两数相加 - 力扣(LeetCode) (leetcode-cn.com)
思路
这道题考察加法模拟和链表的遍历,用count来表示加法操作的进位,用sum来表示此位的加法运算结果。
循环条件是 count不为0(表示有进位) || l1 链表上尚有数字 || l2链表上尚有数字,此时就可以继续进行加法运算。通过new ListNode 创建新节点, 然后不断让newNode指向最新的节点。
注意点:
- 需要用head的Node节点来存储head.next,即结果链表的第一个节点的指针,从而可以返回结果。
- 循环条件的设定
- 每轮的val1 val2值的设定,根据l1 l2 是否存在进行判断
- 注意将l1 l2的指针进行右移
var addTwoNumbers = function(l1, l2) {
let count = 0, sum = 0
let head = new ListNode(0)
let newNode = head
while(count || l1 || l2){
let val1 = l1 === null? 0 : l1.val
let val2 = l2 === null? 0 : l2.val
sum = count + val1 + val2
newNode.next = new ListNode(sum%10)
newNode = newNode.next
count = Math.floor(sum/10)
l1 = l1 === null? null : l1.next
l2 = l2 === null? null : l2.next
}
return head.next
};