Java 找不到两个链表的两种迭代类型之间的差异

Java 找不到两个链表的两种迭代类型之间的差异,java,linked-list,Java,Linked List,给您两个非空的链表,表示两个非负 整数。数字以相反的顺序存储,每个数字 节点包含一个数字。将这两个数字相加,并将其作为 链表 您可以假设这两个数字不包含任何前导零,除了 数字0本身 例如: 输入:(2->4->3)+(5->6->4)输出:7->0->8说明: 342+465=807 以下是我编写的代码: 您的算法是正确的,如下所述: 添加两个列表的元素,同时其中一个列表未用完 从第一个列表中添加任何剩余的“尾部”元素 从第二个列表中添加任何剩余的“尾部”元素 如果不是零,则添加“进位”/ 在步

给您两个非空的链表,表示两个非负 整数。数字以相反的顺序存储,每个数字 节点包含一个数字。将这两个数字相加,并将其作为 链表

您可以假设这两个数字不包含任何前导零,除了 数字0本身

例如:

输入:(2->4->3)+(5->6->4)输出:7->0->8说明: 342+465=807

以下是我编写的代码:


您的算法是正确的,如下所述:

  • 添加两个列表的元素,同时其中一个列表未用完
  • 从第一个列表中添加任何剩余的“尾部”元素
  • 从第二个列表中添加任何剩余的“尾部”元素
  • 如果不是零,则添加“进位”/
  • 在步骤2和步骤3中,只有一个是非空的

    实现中的问题在于实现2和3的方式:由于您使用的是
    if
    ,因此最多会添加一个元素,而不是处理整个“尾部”


    if
    替换为
    while
    将解决此问题。

    非常感谢。已经修好了。当我长时间陷入一个问题时,我总是感到困惑。
    ListNode dummy = new ListNode(0);
    ListNode cur = dummy;
    int add = 0;
    while (r1 != null && r2 != null){
        int sum = r1.val + r2.val + add;
        add = sum / 10;
        cur.next = new ListNode(sum % 10);
        cur = cur.next;
        r1 = r1.next;
        r2 = r2.next;
    }
    if (r1 != null){
        int sum = r1.val + add;
        add = sum / 10;
        cur.next = new ListNode(sum % 10);
        cur = cur.next;
        r1 = r1.next;
    }
    if (r2 != null){
        int sum = r2.val + add;
        add = sum / 10;
        cur.next = new ListNode(sum % 10);
        cur = cur.next;
        r2 = r2.next;
    }
    if (add == 1){
        cur.next = new ListNode(1);
    }