gpt4 book ai didi

java - 链表实现不形成链接(java)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:20 26 4
gpt4 key购买 nike

我正在尝试一个 leetcode 问题,我需要在 java 中实现一个链表,但从未创建“链接”。节点本身确实被创建但在内存中丢失了。我知道如何使用指针在 C++ 中执行此操作,但这在 Java 中如何工作?

问题:

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

打印:

7
0
8

返回:

7 (just head node)

我的代码:

/**
* 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) {

//hold root node to return later, use temp node (l3) to create list
ListNode head = new ListNode(0);
ListNode l3 = head;

boolean carryover = false;

//if lists l1, l2 still have a value, append to l3
while (l1 != null || l2 != null)
{
//always true except on first iteration
if (l3 == null)
l3 = new ListNode(0);

//if l1.val + l2.val >= 10 from last iteration, carry over 1
if (carryover)
{
l3.val += 1;
carryover = false;
}

if (l1 != null)
{
l3.val += l1.val;
l1 = l1.next;
}

if (l2 != null)
{
l3.val += l2.val;
l2 = l2.next;
}

if (l3.val > 9)
{
l3.val -= 10;
carryover = true;
}
System.out.println(l3.val);

//create next 'link' in list
l3 = l3.next;
}
return head;
}
}

最佳答案

l3 = l3.next; 并没有按照您的想法行事。

l3.nextnull,因此您将 null 分配给 l3。那个null并不是l3.next指向的内存中的一个特殊地方,它只是null,也就是说它没有指向对任何事。

因此在下一个循环中,当您执行 l3 = new ListNode(0); 时,您只是在创建一个断开连接的节点。

您应该首先确保 next 指向一个节点,然后您才能使用它。

所以,试试这个:

boolean first = true;

//if lists l1, l2 still have a value, append to l3
while (l1 != null || l2 != null)
{
// create the next node
if (!first) {
// create the next node and attach it to the current node
l3.next = new ListNode(0);
// we now work with the next node
l3 = l3.next;
} else {
first = false;
}

//if l1.val + l2.val >= 10 from last iteration, carry over 1
if (carryover)
{
l3.val += 1;
carryover = false;
}

if (l1 != null)
{
l3.val += l1.val;
l1 = l1.next;
}

if (l2 != null)
{
l3.val += l2.val;
l2 = l2.next;
}

if (l3.val > 9)
{
l3.val -= 10;
carryover = true;
}
System.out.println(l3.val);

}

关于java - 链表实现不形成链接(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49477102/

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