一直在为考试而学习,但我不明白为什么下面的解决方案有效,它只为 curr.next 节点赋值,但是 curr.current 的值在哪里?哪位好心人能解释一下。谢谢!问题:给你两个非空链表,代表两个非负整数。数字以相反的顺序存储,它们的每个节点都包含一个数字。将两个数字相加并将其作为链表返回。您可以假设这两个数字不包含任何前导零,除了数字 0 本身。例子:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8解释:342 + 465 = 807。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummyHead = new ListNode(0); ListNode p = l1, q = l2, curr = dummyHead; int carry = 0; while (p != null || q != null) { int x = (p != null) ? p.val : 0; int y = (q != null) ? q.val : 0; int sum = carry + x + y; carry = sum / 10; curr.next = new ListNode(sum % 10); curr = curr.next; if (p != null) p = p.next; if (q != null) q = q.next; } if (carry > 0) { curr.next = new ListNode(carry); } return dummyHead.next; }}
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
在开始循环之前,dummyHead
为了便于实现,定义了一个哨兵节点。我们需要返回,dummyHead->next
因为 from dummyHead->next
,实际的链表开始了。
所以,在循环内部,在每次迭代中,我们实际上从“前一个”节点开始,并设置curr.next
和转发我们的链表,curr = curr.next
它实际上是“当前”节点。
添加回答
举报
0/150
提交
取消