gpt4 book ai didi

java - 创建 ListNode 的新实例

转载 作者:行者123 更新时间:2023-12-01 17:27:12 26 4
gpt4 key购买 nike

我试图解决的问题是 LeetCode 问题,但我被卡住了 https://leetcode.com/problems/add-two-numbers/

我尝试过以下方法

import java.util.*;
class Solution {
private ListNode l = new ListNode(0);
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

int pow = 0;
int counter = 0;
int sum1 = 0;
int sum2 = 0;


while(l1 != null && l2 != null)
{
sum1 = sum1 + ((int) (l1.val * (Math.pow(10,pow))));
sum2 = sum2 + ((int) (l2.val * (Math.pow(10,pow))));
pow++;
l1 = l1.next;
l2 = l2.next;
}

pow = pow - 1;

int final_sum = sum1 + sum2;
String number = String.valueOf(final_sum);
char[] digits = number.toCharArray();


l = l.next;
ListNode x = new ListNode();
x.val = (digits[2] - '0');
l= x;
addElement(digits[1] - '0');
addElement(digits[0] - '0');

return l;


}

public void addElement(int number)
{
ListNode x = new ListNode();
x.val = number;

l.next = x;
}
}

但是,我注意到这只是替换了 ListNode x 的最后一个给定值,并且没有添加到 ListNode l 中。我首先尝试使其与 ListNode 的一个实例一起使用,而不创建具有不同变量名称的多个“ListNode x = new ListNode()”。

目前,当给定 [2,4,3] 时,它只返回 [7,8];当它应该返回 [7,0,8] 时,它只返回 [5,6,4]。任何提示或建议都会有帮助。

最佳答案

雷伊,不要让它变得复杂,这只是一个例子

从空节点开始;

ListNode l3 = null;

定义 rem 和 temp 节点;

int rem = 0;
ListNode temp = l3;

迭代两个节点;

while(l1 != null && l2 != null)      

对值求和,

int sum = l1.val + l2.val;

如果 temp 为空,则处于开始状态;

l3 = temp = new ListNode(sum%10);
rem = sum / 10;

如果不是,则下一步计算,如果是rem则进位

sum += rem;
rem = sum / 10;
temp.next = new ListNode(sum%10);

移动温度

temp = temp.next;

同时移动源,

l1 = l1.next;
l2 = l2.next;

完成后,再次携带 if rem,

if (rem > 0) {
temp.next = new ListNode(rem);
}

然后返回;

return l3;

关于java - 创建 ListNode 的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61195440/

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