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