一、题目内容

image.png

二、题解

解法1:

思路

记得dummy节点存头,tmp节点接值

代码

  1. public class Solution {
  2. public ListNode addInList(ListNode head1, ListNode head2) {
  3. // write code here
  4. ListNode n1 = reverse(head1);
  5. ListNode n2 = reverse(head2);
  6. ListNode dummyHead = new ListNode(-1);
  7. ListNode tmp = dummyHead;
  8. int c = 0;
  9. while (n1 != null || n2 != null) {
  10. int a = n1 == null ? 0 : n1.val;
  11. int b = n2 == null ? 0 : n2.val;
  12. int sum = a + b + c;
  13. tmp.next = new ListNode(sum % 10);
  14. c = sum / 10;
  15. tmp = tmp.next;
  16. if (n1 != null) {
  17. n1 = n1.next;
  18. }
  19. if (n2 != null) {
  20. n2 = n2.next;
  21. }
  22. }
  23. if (c > 0) {
  24. tmp.next = new ListNode(c);
  25. }
  26. return reverse(dummyHead.next);
  27. }
  28. private ListNode reverse(ListNode root) {
  29. ListNode pre = null, cur = root;
  30. while (cur != null) {
  31. ListNode next = cur.next;
  32. cur.next = pre;
  33. pre = cur;
  34. cur = next;
  35. }
  36. return pre;
  37. }
  38. }