使用反转
public void rotate(int[] nums, int 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--;
}
}
//时间复杂度:O(n) 。 n 个元素被反转了总共 3 次。
//空间复杂度:O(1) 。 没有使用额外的空间