反转三次数组即可完成循环移动的结果。
第一次反转整个数组;
第二次从数组开始反转需要移动的次数个;
第三次反转剩下的部分。
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
int k = m % a.length;
reverse(a,0,a.length-1);
reverse(a,0,k-1);
reverse(a,k,a.length-1);
return a;
}
public static void reverse(int[] arr,int start, int end){
int temp = 0;
while(start < end){
temp = arr[end];
arr[end] = arr[start];
arr[start] = temp;
end--;
start++;
}
}
}
京公网安备 11010502036488号