给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807

    1. public class AddTwoNumbers {
    2. public class ListNode {
    3. int val;
    4. ListNode next;
    5. ListNode(int x) { val = x; }
    6. }
    7. public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    8. if (l1 == null) {
    9. return l2;
    10. }
    11. if (l2 == null) {
    12. return l1;
    13. }
    14. ListNode head = new ListNode(0);
    15. ListNode temp = head;
    16. int value = 0;
    17. while (l1 != null || l2 != null) {
    18. int sum = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + value;
    19. value = sum / 10;
    20. temp.next = new ListNode(sum % 10);
    21. temp = temp.next;
    22. if (l1 != null) {
    23. l1 = l1.next;
    24. }
    25. if (l2 != null) {
    26. l2 = l2.next;
    27. }
    28. }
    29. if (value > 0) {
    30. temp.next = new ListNode(value);
    31. }
    32. return head.next;
    33. }
    34. }