Codility: CyclicRotation



問題は、配列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;
    }