解题思路:最简单的方法就是浪费空间的方法。还有一种巧法,先将整个数组反转,然后将需要移动的后面的k(如果超过数组长度就取余)个位置的数反转,最后将剩下的数反转。
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 tmp = nums[start];nums[start]=nums[end];nums[end]=tmp;start++;end--;}return;}
}