• 第一次,全数组翻转,12345->54321
  • 第二次,m位之前的数反转,假设m=3,那就是54321->34521
  • 第三次,m位之后的数反转,34521->34512

m取值若超过数组长度,则需取模,如数组为12345,向右移动7位,那移动1位变为51234,移动2位变为45123...移动4位变为23451,移动5位变为12345,所以当右移长度是数组整数倍时,等于没移动

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
        m=m%n;
        reverse(a,0,n-1);
        reverse(a,0,m-1);
        reverse(a,m,n-1);
        return a;
    }
    
//     反转数组
    public void reverse(int[] arr,int start,int end){
        if(start>end)return;
        if(end>arr.length)return;
        for(int i=start,j=end;i<=j;i++,j--){
            swap(arr,i,j);
        }
    }
    
    public void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
}