在java中成对交换节点

问题描述 投票:0回答:1

我正在 leetcode 上解决这个问题,但我一直遇到问题:这是我的代码:

单链表的定义:

class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }  
}
 
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head == null || head.next == null) {
            return head;
        }
        ListNode temp = new ListNode(0);
        temp.next = head;
        ListNode prev = temp;

        while(head != null && head.next != null) {
            ListNode firstNode = head;
            ListNode secondNode = head.next;

            prev.next = secondNode;
            firstNode.next = secondNode.next;
            secondNode.next = firstNode;

            prev = firstNode;
            head = firstNode.next;
        }
        return temp.next;
    }
}

它不断显示错误:

java.lang.NoSuchMethodError:'ListNode ListNode.deserialize(java.lang.String)'
Deserializer.toListNode(来源未知)
在第 82 行,Driver.main

我以为是因为我也定义了main函数。但不。帮助我理解这一点,我该如何解决这个问题。

期望链表的输出:1->2->3->4 as 2->1->4->3

java swap dsa
1个回答
0
投票

这是因为您不应该取消注释

ListNode
的定义。它由应用程序的“驱动程序”部分提供给您(其中包含测试您的实现的主函数)。该评论仅用于您的文档。

实际上,

ListNode
类比注释中显示的方法有更多的方法:
deserialize
方法就是其中之一,因此您会得到有关缺少方法的错误。

评论仅向您显示与您相关的

ListNode
的那些方法。类的其余定义纯粹是为了 LeetCode 的使用。

© www.soinside.com 2019 - 2024. All rights reserved.