两个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;
}
}