题目:
    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
    请你将两个数相加,并以相同形式返回一个表示和的链表
    你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
    示例:
    **
    2.两数相加 - 图1

    输入:l1 = [2,4,3], l2 = [5,6,4]
    输出:[7,0,8]
    解释:342 + 465 = 807

    如果考虑先把链表中的两个数构造出来,相加以后再创建一个链表存储这俩数的和。当链表长度过长的时候会出现存储大小不够的数据溢出问题。
    **
    => 直接一位一位的运算,考虑进位的问题(类似于高精度加法)

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