私は基本的に整数配列があり、各インデックスの値が別のインデックスを指しているところで、コードチャレンジをしています。配列内のループの長さは、配列のインデックス0から始めることが条件です。整数配列内のループの長さを見つける
:numbers = {1,3,0,1};インデックス0は1で、インデックス1が3になります。これは1につながり、インデックス1に戻ります。したがって、長さ2のループが作成されます。
私の問題は、 3/5のテストケースを渡すために、コード内でエラーを引き起こす可能性のある弱点を見つけることができません。私は期待されていたことや、「Test Case n Failed!」以外の情報は教えていない。ここで
は私のコードです:
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();
}
EDITS:
配列のサイズが、私が受け取ったテストケースは{あるどこでも2〜5000
になります1 、3、0、1}、{1,0}、{1,2,1}、私のコードはすべて正しく渡されます。
を試してみてください。空の配列の場合にも、0を返す必要があります。 –
エラーチェックが追加されました。私が入手したreadmeは、配列のサイズが2から5000までの範囲であると言っていました。その情報を忘れて元の投稿に編集します。 –
{1,2,3,4,4}の返品について教えてください。私は1が答えだと仮定しますが、あなたのコードから4を得ました。 – hk6279