import java.util.*; public class Solution { // 从1开始,n是数组长度,m是移动数 // 像后面整体移动几个就相当于,反转 移动数与数组长度 到前面 public int[] solve (int n, int m, int[] a) { // 进行三次反转,直到反转成目标样 // 第一次整体反转,第二次将左边m个数反转, // 第三次将右边n-m个数反转 // 将移动次数取与,数组长度可能小于移动数 m = m%n; reverse(a,0,n-1); reverse(a,0,m-1); reverse(a,m ,n-1); return a; } //反转函数 public void reverse(int[] nums, int start, int end){ while(start < end){ swap(nums, start++, end--); } } public void swap(int[] num,int start,int end){ int tmp = num[start]; num[start] = num[end]; num[end] = tmp; } }