牛客地址
解题思路
三次反转
实现代码
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) {
// write code here
if(a == null || a.length <= 0){
return a;
}
m %= n;
//这里是n - m - 1, 而不是m - 1: 需要注意
reverseArray(a, 0, n - m - 1);
reverseArray(a, n - m , n - 1);
reverseArray(a, 0, n - 1);
return a;
}
public void reverseArray(int[] arr, int start, int end){
int i = start;
int j = end;
while(i < j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i ++;
j --;
}
}
}