int[][] A = new int [n][];
for (int i=0; i<n; i++) {
if (i % 2 == 0) // i is a multiple of 2
A[i] = new int [n];
else
A[i] = new int [1];
}
for (int i=0; i<A.length; i++)
for (int j=0; j<A[i].length; j++)
sum = sum + A[i][j];
私は配列が何をしているのか混乱しています。最初の行は、n列の2D配列を初期化します。最初のforループは各列を調べます。それが偶数列の場合は、その列の最初の行にnを入れます。今はちょっと混乱していますが、それは2D配列でなければならないにもかかわらず1つの括弧で参照されているからです。ループのための二重と同じもの。 A.lengthとA [i] .lengthの違いは何ですか?私が理解していることから、ループの二重ループは配列全体を反復し、すべての要素の合計を取得しています。誰かがこれを明確にすることはできますか?なぜなら私は文法について少し失われているからです。このコードとランタイムを解読するのに役立ちます
また、私の本能は、このコードは少なくとも2回のループのためにO(n^2)時間で実行されると言います。それは正しいようですか?
これは、書き込まれた言語でタグ付けする必要があります。 –