LeetCode 2 两数相加

77 阅读1分钟

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;

};