LeetCode 2 两数相加
1 分析
这道题,题目说了是倒叙,那么就按照加法去,遍历每个节点相加,进位即可
注意,不一样长,可以 l2 ? l2.val : 0, 视作0
2 Code
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function addTwoNumbers(l1: ListNode | null, l2: ListNode | null): ListNode | null {
const dummy = new ListNode(-1);
let p = dummy;
let cnt = 0; // 进位
while(l1 || l2) {
const ans = (l1 ? l1.val : 0) + (l2 ? l2.val : 0)+ cnt;
const cur = new ListNode(ans % 10);
cnt = Math.floor(ans / 10);
p.next = cur;
p = p.next;
// l1 l2 前进
if(l1) l1 = l1.next;
if(l2) l2 = l2.next;
}
if(cnt) p.next = new ListNode(cnt);
return dummy.next;
};