gpt4 book ai didi

java - 返回链表中节点的位置,递归方法

转载 作者:行者123 更新时间:2023-11-30 06:38:13 25 4
gpt4 key购买 nike

所以,我试图解决一个问题,我应该编写一个递归方法来搜索链表中的节点,并返回它的索引(从 0 开始索引)。如果节点不存在,我需要返回-1。这就是我实现逻辑的程度。它适用于我认为的所有测试用例,除了一个异常(exception),当节点不在链表中时,它返回在这种情况下链表的最后一个索引。

这就是我的逻辑。

public static int indexOfNRec(LinkedListNode<Integer> head, int n) {
if(head==null)
return -1;
if(head.data==n)
return 0;
int count=1;
return count+indexOfNRec(head.next,n);
}

这是 LinkedListNode 的代码

class LinkedListNode<T> {
T data;
LinkedListNode<T> next;

public Node(T data)
this.data = data;
}

我明白为什么我的逻辑失败,但我无法解决问题。很抱歉问这么基本的问题,我对递归很差。

最佳答案

我使用了一个辅助函数来解决这个问题,

public static int helper(LinkedListNode<Integer> head, int n,int pos)
{
if(head==null)
return -1;

if(head.data==n)
{
return pos;
}

int ans=helper(head.next,n,pos+1);
return ans;
}


public static int indexOfNRec(LinkedListNode<Integer> head, int n) {


return helper(head,n,0);

}

它适用于所有测试用例。

关于java - 返回链表中节点的位置,递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859841/

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