2. 两数相加

233 阅读1分钟

思路 :直接按照链表顺序相加即可,需要考虑以下四种情况:

  • 正常加 123 + 123
  • 对不齐 123 + 12
  • 有进位 543 + 551
  • 末尾进 543 + 127 99 + 11 和 123 + 12,即可满足所有情况

最佳版

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode();
        ListNode cur = dummy;
        int carry = 0;
        while (l1 != null || l2 != null || carry != 0) {
            int num1 = l1 == null ? 0 : l1.val;
            int num2 = l2 == null ? 0 : l2.val;
            int sum = num1 + num2 + carry;
            cur.next = new ListNode(sum % 10);
            cur = cur.next;
            carry = sum / 10;
            l1 = l1 == null ? l1 : l1.next;//不能直接l1=l1.next,注意l1=null的情况
            l2 = l2 == null ? l2 : l2.next;            
        }
        return dummy.next;
    }
}