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

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

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

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

    https://leetcode-cn.com/problems/add-two-numbers/
    我的解法:

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode(int x) { val = x; }
    7. * }
    8. */
    9. class Solution {
    10. public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    11. ListNode root = new ListNode(0);
    12. ListNode p = root;
    13. ListNode temp = p;
    14. int t1;
    15. while (l1 != null && l2 != null) {
    16. t1 = l1.val + l2.val + p.val;
    17. p.val = t1 % 10;
    18. p.next = new ListNode(t1 / 10);
    19. temp = p;
    20. p = p.next;
    21. l1 = l1.next;
    22. l2 = l2.next;
    23. }
    24. if (l1 != null || l2 != null) {
    25. if (l1 == null) l1 = l2;
    26. while (l1 != null) {
    27. t1 = l1.val + p.val;
    28. p.val = t1 % 10;
    29. p.next = new ListNode(t1 / 10);
    30. temp = p;
    31. p = p.next;
    32. l1 = l1.next;
    33. }
    34. }
    35. if (p.val == 0) temp.next = null;
    36. return root;
    37. }
    38. }

    image.png