gpt4 book ai didi

java - 在整数数组中查找循环的长度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:57:44 25 4
gpt4 key购买 nike

所以我正在做一个代码挑战,其中基本上有一个整数数组,其中每个索引中的值都指向另一个索引。如果您从数组中的索引 0 开始,您的工作是找到数组中循环的长度。

即:数字 = {1, 3, 0, 1};索引 0 是 1,它会引导您到索引 1,索引 1 是 3,索引 1 会引导您回到索引 1,从而创建一个长度为 2 的循环。

我的问题是我的代码能够通过 3/5 的测试用例,而且我无法在代码中找到任何可能导致错误的弱点。除了“测试用例 n 失败!”之外,我没有被告知预期的内容,也没有任何其他信息。

这是我的代码:

public static int answer(int[] numbers) {
List<Integer> valuesUsed = new ArrayList<Integer>();
int nextValue, currentValue = numbers[0];
do {
valuesUsed.add(currentValue);
currentValue = (nextValue = numbers[currentValue]);
} while (!valuesUsed.contains(currentValue));
return valuesUsed.size();
}

编辑:

  • 数组大小介于 2 到 5000 之间。

  • 我收到的测试用例是 {1, 3, 0, 1}, {1, 0}, {1, 2, 1},我的代码全部正确通过。

最佳答案

我不确定这是否是唯一的错误,但您忘记将 0 添加到 valuesUsed。这是您遇到的第一个索引,因此应该在循环之前将其添加到列表中。

编辑:

更正:

当您关闭循环时,返回 valuesUsed.size() 是错误的,因为遇到的一些索引不是循环的一部分。

您应该返回 valuesUsed.size()-valuesUsed.indexOf(currentValue)

例如数组为{1,3,1,4,2},则循环为1->3->4->2->1,循环长度为4(第一个元素不算)。

关于java - 在整数数组中查找循环的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36589741/

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