image.png

    1. public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    2. ListNode head = new ListNode(-1);
    3. ListNode pre = head;
    4. int carry = 0;
    5. while (l1 != null && l2 != null) {
    6. ListNode node = new ListNode();
    7. int sum = l1.val + l2.val + carry;
    8. carry = sum / 10;
    9. node.val = sum % 10;
    10. head.next = node;
    11. head = head.next;
    12. l1 = l1.next;
    13. l2 = l2.next;
    14. }
    15. while (l1 != null) {
    16. ListNode node = new ListNode();
    17. int sum = l1.val + carry;
    18. carry = sum / 10;
    19. node.val = sum % 10;
    20. head.next = node;
    21. head = head.next;
    22. l1 = l1.next;
    23. }
    24. while (l2 != null) {
    25. ListNode node = new ListNode();
    26. int sum = l2.val + carry;
    27. carry = sum / 10;
    28. node.val = sum % 10;
    29. head.next = node;
    30. head = head.next;
    31. l2 = l2.next;
    32. }
    33. if (carry != 0) {
    34. head.next = new ListNode(carry);
    35. }
    36. return pre.next;
    37. }