import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 旋转数组
* @param n int整型 数组长度
* @param m int整型 右移距离
* @param a int整型一维数组 给定数组
* @return int整型一维数组
*/
public int[] solve(int n, int m, int[] a) {
// 对m取余,移动次数最少,且不影响结果
m = m % n;
if (m == 0) {
return a;
}
// 通过三次反转完成
// 先对数组全部反转
rev(a, 0, n - 1);
// 再对m左边的数组反转
rev(a, 0, m - 1);
// 最后对m右边的数组反转
rev(a, m, n - 1);
return a;
}
public void rev(int[] a, int start, int end) {
while (start < end) {
int tmp = a[end];
a[end] = a[start];
a[start] = tmp;
start++;
end--;
}
}
}