求两个单链表之和

求两个单链表之和

问题

这个题目说的是,给你两个非空的单链表,它们代表两个非负整数,并且逆序表示。你要将这两个数求和,并将结果以链表形式返回。你不需要考虑前导 0 这种情况,也就说 3 不会表示成 003 这样子。

比如说给你的两个链接表是:

1 -> 2 -> 3
6 -> 7 -> 8 -> 9

1 -> 2 -> 3 表示的整数是 321,6 -> 7 -> 8 -> 9 表示的整数是 9876。我们需要输出的是它们求和后的链表:

7 -> 9 -> 1 -> 0 -> 1

代码

public class AlgoCasts {

  public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
      val = x;
    }
  }

  // Time: O(max(m, n)), Space: O(max(m, n))
  public ListNode addTwoLinkedListNumbers(ListNode l1, ListNode l2) {
    ListNode dummy = new ListNode(0), p = dummy;
    int carry = 0;
    while (l1 != null || l2 != null || carry != 0) {
      int sum = carry;
      if (l1 != null) {
        sum += l1.val;
        l1 = l1.next;
      }
      if (l2 != null) {
        sum += l2.val;
        l2 = l2.next;
      }
      p.next = new ListNode(sum % 10);
      p = p.next;
      carry = sum / 10;
    }
    return dummy.next;
  }

}

  转载请注明: ForwardXu 求两个单链表之和

 上一篇
判断单链表是否有环 判断单链表是否有环
判断单链表是否有环问题 这个题目说的是,给你一个单链表,你要判断它是否会形成环,也就是链表的最后一个节点指向了前面一个已经存在的节点。 代码 public class AlgoCasts { public class ListNode
2018-12-26
下一篇 
排序算法 排序算法
排序待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。 研究排序算法的成本模型时,计算的是比较和交换的次数。 使用辅助函数 less() 和 swap(
2018-12-26
  目录