Painless
CyclicRotation
Rotates the array to the right by the specified number of steps.
Given an array A of N integers. Rotating the array means that each element is shifted to the right by one index and the last element of the array is moved to the first place. For example, the rotation of array A = [3,8,9,7,6] is [6,3,8,9,7](elements are shifted right by one index, 6 moves to the first place) Will be).
The goal is to rotate the array AK K times. That is, each element of A is shifted to the right K times.
Write a function:
Class Solution {public int [] solution (int [] A, int K);}
Given an array A consisting of N integers and an integer K, it returns an array A rotated K times.
For example, given
A = [3、8、9、7、6]
K = 3
The function should return [9, 7, 6, 3, 8]. Three rotations were made.
[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]
As another example
A = [0、0、0]
K = 1
Function must return [0, 0, 0]
Given the
A = [1、2、3、4]
K = 4
Function must return [1, 2, 3, 4]
Suppose:
Your solution will focus on ** correctness **. Solution performance is not the focus of evaluation.
Program CyclicRotation.java
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 CyclicRotationTest.java
Report Candidate Report: training6HJBYX-26F
Recommended Posts