Painless
CyclicRotation
タスクの説明
N個の整数からなる配列Aが与えられます。配列の回転とは、各要素が1つのインデックスだけ右にシフトされ、配列の最後の要素が最初の場所に移動されることを意味します。たとえば、配列A = [3、8、9、7、6]の回転は[6、3、8、9、7]です(要素は1つのインデックスだけ右にシフトされ、6は最初の場所に移動されます)。
目標は、配列AKをK回回転させることです。つまり、Aの各要素は右にK回シフトされます。
関数を書く:
クラスSolution {public int [] solution(int [] A、int K); }
これは、N個の整数と整数Kで構成される配列Aが与えられた場合、K回回転した配列Aを返します。
たとえば、与えられた
A = [3、8、9、7、6]
K = 3
関数は[9、7、6、3、8]を返す必要があります。 3つのローテーションが行われました。
[3、8、9、7、6]-> [6、3、8、9、7]
[6、3、8、9、7]-> [7、6、3、8、9]
[7、6、3、8、9]-> [9、7、6、3、8]
別の例として、
A = [0、0、0]
K = 1
関数は[0、0、0]を返す必要があります
与えられた
A = [1、2、3、4]
K = 4
関数は[1、2、3、4]を返す必要があります
と仮定する:
- NとKは、[0..100]の範囲内の整数です。
- 配列Aの各要素は、[-1,000..1,000]の範囲内の整数です。
あなたの解決策では、正しさに焦点を合わせます。ソリューションのパフォーマンスは、評価の焦点にはなりません。
解く
Program
CyclicRotation.java
public int[] solution(int[] A, int K) {
int N = A.length;
int[] B = new int[N];
if (N > 0 && K > 0) {
ArrayList<Integer> arrayB = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
arrayB.add(A[i]);
}
for (int j = 0; j < K; j++) {
arrayB.add(0, arrayB.get(arrayB.size() - 1));
arrayB.remove(arrayB.size() - 1);
}
for (int k = 0; k < arrayB.size(); k++) {
B[k] = (int) arrayB.get(k);
}
} else {
B = A;
}
return B;
}
junit
Report
Candidate Report: training6HJBYX-26F