私は通常の配列 'A'を与え、次のような計算を実行するように要求されたコーディングテストを試みました:x = A[i], x = A[A[i]], x = A[A[A[i]]] ....
(詳細は画像で詳しく説明します)。質問配列A = [5,4,0,3,1,6,2] and A[2] = 0, A[A[i]] = 4, A[A[A[i]]] = 6, A[A[A[A[i]]]] = 2
に示されている例では、コーディングテストJava配列S = A [A [A [A]]]]?
誰かがこの背後にある論理を説明し、問題に対する独自の解決策を示すことができます。
P.S.をsnipet私はサンプルテストを完了して渡すことができましたが、私はポイントを得ることができない本当に安い方法を使用したと感じます。
以下のコードは私の解決策でしたが、うまくいきましたが、それを作った人が探していたものではないと私は思います。私は "A [A [A ....]"の背後にある論理を理解できませんでした。
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
String[] values = new String[A.length];
int max = 0;
int counter = 0;
for(int i = 0; i < A.length; i++){
String ASet1 = Integer.toString(A[i]);
String ASet2 = Integer.toString(A[A[i]]);
String ASet3 = Integer.toString(A[A[A[i]]]);
String ASet4 = Integer.toString(A[A[A[A[i]]]]);
String ASet5 = Integer.toString(A[A[A[A[A[i]]]]]);
String ASet6 = Integer.toString(A[A[A[A[A[A[i]]]]]]);
String ASet7 = Integer.toString(A[A[A[A[A[A[A[i]]]]]]]);
String ASet8 = Integer.toString(A[A[A[A[A[A[A[A[i]]]]]]]]);
String ASet9 = Integer.toString(A[A[A[A[A[A[A[A[A[i]]]]]]]]]);
values[i] = ASet1 + ASet2 + ASet3 + ASet4 + ASet5 + ASet6 + ASet7 + ASet8 + ASet9;
//System.out.println(values[i]);
}
for(int l = 0; l < values.length; l++){
String valueline = values[l];
for(int j = 0; j < values.length; j++){
counter = 0;
char c = valueline.charAt(j);
for(int k = 1; k < values.length; k++){
char c2 = valueline.charAt(k);
if(c != c2){
counter++;
}else{
continue;
//counter = 0;
}
if(max < counter){
max = counter;
}
}
}
}
return max - 1;
}
}
ようこそこのサイトサミへ。これは開発者のためのサイトであり、多数の開発者があなたを助けるためにここにあります。しかし、私たちがあなたのコードを見ない限り、あなたの問題は解決できません。あなたが書いたコードをこの質問に貼り付けてください。 – progyammer
@progyammerあなたは正しいですが、コードを表示することに加えて([mcve]を参照)、解決する必要がある問題文もあるはずです。 OPリクエストのような "問題に対する独自の解決策"を表示するだけでは、SOには常に広すぎます。 OPは[ヘルプ] –
sryが完全なコードスニペットを持っていないことを読んでくださいが、私は私のプロセス全体を説明しようとしました、主にS [K] = A [K]、A [A] 、A [A [A [K]]] ... –