思路 :直接按照链表顺序相加即可,需要考虑以下四种情况:
- 正常加 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;
}
}