两个for循环嵌套,第一层是需要循环的次数,第二层则是遍历数组每一个元素调换位置。往右移是从大至小遍历,往左移是从小至大遍历即可。

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) {
        /**取余右移的值,取余使其不会下标超界
         * m就是要移动的次数,如果为0则不移动
         * 每移动一次则减一
         */
        for(m = m%n; m>0; m--){
            /**右移则需要将i等于数组最大的有效下标
             * 只要没有移到最前面的数值则一直移动
             * 每次移动会交换两个数
             */
            for(int i=n-1;i>0;i--){
                swap(a,i,i-1);
            }
        }
        return a;
    }

    public void swap(int[] nums, int a, int b){
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    }
}