问题
给定一个数组nums,将数组中的元素【向右】旋转k个位置。
思路
每个元素向右旋转,相当于要确定当前元素的新的位置,位置计算:(当前元素下标+要旋转多少个位置)% 数组长度。
实现
public class ReverseArray {
public static void main(String[] args) {
int[] nums = new int[]{1,2,3,4,5,6,7};
int k = 3;
int[] result = rotate(nums,k);
System.out.println(Arrays.toString(result));
}
private static int[] rotate(int[] nums, int k) {
//获取数组长度
int length = nums.length;
//定义一个新数组
int[] result = new int[length];
//遍历原数组,将原数组值+k ,%length确定元素在新数组中的位置,并赋值
for (int i=0;i<length;i++){
result[(i+k)%length]= nums[i];
}
return result;
}
}
网友评论