gpt4 book ai didi

java - 链表节点跳过循环并移至下一个参数

转载 作者:行者123 更新时间:2023-12-01 07:00:15 25 4
gpt4 key购买 nike

我正在尝试练习leetcode示例。输入 -[2,4,3][5,6,4]

预期输出 = [7,0,8]; (2+5 , 4+6 , 3+4+1(从节点2结转1));我得到的是 [7,8];

q.next 和 p.next - 跳过第二个节点的加法,仅对第一个和第三个节点进行加法。我无法理解为什么跳过第二个节点。

public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode extra = new ListNode(0);
ListNode p = l1 , q = l2, curr = extra;
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);
p=p.next;
q=q.next;
if(p != null)p = p.next;
if(q != null)q = q.next;
}
if(carry > 0)
{
curr.next = new ListNode(carry);
}
return curr;
}
}

根据答案进行编辑 - 我在 leetcode 中检查了下面的代码。它仍然说输出是[0,8]而不是 [7,0,8]

这是问题的链接:https://leetcode.com/problems/add-two-numbers/

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode extra = new ListNode(0);
ListNode p = l1 , q = l2, curr = extra;
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);

if(p != null)p = p.next;
if(q != null)q = q.next;
}
if(carry > 0)
{
curr.next = new ListNode(carry);
}
return curr;
}
}

最佳答案

你有多余的

p = p.next 
q = q.next

这会导致跳过奇数索引(从 0 开始)。这应该被删除,因为仅

if(p != null)p = p.next;
if(q != null)q = q.next;

就够了

关于java - 链表节点跳过循环并移至下一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60387722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com