一、题目描述

二、数学知识
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数,等价于将数组n个元素反转,将前k个元素反转,再将后n-k个元素反转,同时,注意此处,k=k%n(对于n为1的情况)。
三、优解代码
class Solution {
public void rotate(int[] nums, int k) {
k = k % nums.length;
reverse(nums,0,nums.length-1);
reverse(nums,0,k-1);
reverse(nums,k,nums.length-1);
}
public void reverse(int[] nums,int start,int end){
while(start < end){
int temp = nums[start];
nums[start]=nums[end];
nums[end] = temp;
start++;
end--;
}
}
}