Skip to content

力扣链接:2.两数相加

难度:⭐⭐

解题关键词:链表

解题思路:记得进位,如果最后遍历完,还有进位,一定要在末尾加一个 nodeValue 为 1 的节点。

typescript
function addTwoNumbers(
  l1: ListNode | null,
  l2: ListNode | null
): ListNode | null {
  let flag = false;
  const head = new ListNode();
  let cur = head;

  while (l1 || l2) {
    const l1Val = l1 ? l1.val : 0;
    const l2Val = l2 ? l2.val : 0;

    const sum = l1Val + l2Val + +flag;

    // 多于 10 产生了进位,要 %10
    cur.next = new ListNode(sum % 10);
    // 如果大于等于10,下一位要进位
    flag = sum >= 10;

    cur = cur.next;
    if (l1) l1 = l1.next;
    if (l2) l2 = l2.next;
  }

  // 最后还有进位
  if (flag) {
    cur.next = new ListNode(1);
  }

  return head.next;
}