题目描述:
    image.png
    输入输出Demo:
    image.png
    image.png
    解析:
    本题属于Medium题,本质就是使用list模拟整数的加法

    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. int jw = 0; //表进位 0或1
    14. ListNode dummy = new ListNode(-1);
    15. ListNode cur = dummy;
    16. while (l1 != null || l2 != null) {
    17. int num1 = l1 == null ? 0 : l1.val;
    18. int num2 = l2 == null ? 0 : l2.val;
    19. int sum = num1 + num2 + jw;
    20. jw = sum / 10; //是否需要进位
    21. sum %= 10; //最后存入链表中的值
    22. cur.next = new ListNode(sum);
    23. cur = cur.next;
    24. if (l1 != null) {
    25. l1 = l1.next;
    26. }
    27. if (l2 != null) {
    28. l2 = l2.next;
    29. }
    30. }
    31. if (jw == 1) {
    32. cur.next = new ListNode(jw); //保证了最后一个数相加需要进位 例如99+99=198
    33. }
    34. return dummy.next;
    35. }
    36. }