反转三次数组即可完成循环移动的结果。
第一次反转整个数组;
第二次从数组开始反转需要移动的次数个;
第三次反转剩下的部分。
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++; } } }