内に設定され、文は次のようですN個の異なる整数からなる。配列には[0 ... N-1]の範囲のすべての整数が含まれます。 S [k] = {A [K]、A [A [K]]、A [A [A] [K]]、...}と定義する。 。Codility:</p> <p>Aゼロインデックス付きの配列A:最長私は本当に、私はそれについてのあなたの考えを聞きたい私をpuzzeled Codilityで最近、会社のためにテストを受けた配列
セットS [k]はkごとに有限です。
Nの整数から成る配列を与えられた
class Solution {
public int solution (int [] a);
}
関数を記述し、このアレイの最大の集合S [K]のサイズを返します。配列が空の場合、関数はOを返すはずです。 A [1] = 4、A [2] = 0、A [3] = 3、A [4] = 1、A [5] = 6、A [0] = 5、A [4] = 0、A [5] = 6、A [4] S [2] = {0,5,6,2}は4つの要素を持つので、関数は4を返すはずです。他の集合S [k]は4つ以上の要素を持たない。
まず、S [k = 2]を返す理由は分かりませんが、S [k = 0]にも4つの要素があり、最大kを返すべきではないと言われています。
O(n)スペースとランタイムでこれを行う必要があります。
アイデア?
Sの選択[2]任意です。 S [0]かS [2]のどちらを選ぶかは関係ありませんので、サイズ、つまり4を返すだけです。実際、あなたの例では、S [0] = S [2] = S [5] = S [6]です。あなたがS [0]またはS [2]のセットを呼び出しても、なぜ4が正しい結果であるかという議論は有効です。 –