Codility: CyclicRotation
4177 ワード
問題は、配列A要素をKだけ後ろに移動する配列を返すことです.
ひとつひとつ遅らせてもいいですが、もう一度考えてみましょう.
配列Aの長さは一定であり、配列の長さを後回しにすると元のAに戻る.
また配列Aの要素順序は固定されている.
これを考慮すると,配列を遅らせる回数を減らすことができる.
(注意Aには空の配列があり、Kには0がある可能性があります)
JAVA
public int[] solution(int[] A, int K) {
if(A.length == 0) {
return A;
}
int len = A.length;
int diff = K % len;
if (diff == 0) {
return A;
}
int startIndex = len - diff;
int[] answer = new int[len];
for(int index = 0; index < len; index++) {
int targetIndex = (startIndex + index) % len;
answer[index] = A[targetIndex];
}
return answer;
}
Reference
この問題について(Codility: CyclicRotation), 我々は、より多くの情報をここで見つけました https://velog.io/@wonhee010/Codility-CyclicRotationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol