Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
这题要求in-place。 思路和reverse words in a string II 一样: 矩阵转置 T(T(A)T(B))=BA
[code]
public class Solution {
public void rotate(int[] nums, int k) {
if(nums.length<2)return;
int n=nums.length;
k%=n;
int i=0,j=n-k-1;
while(i<j)
{
swap(nums,i++,j--);
}
i=n-k;
j=n-1;
while(i<j)swap(nums,i++,j--);
i=0;
j=n-1;
while(i<j)swap(nums,i++,j--);
}
void swap(int[] nums, int i, int j)
{
int t=nums[i];
nums[i]=nums[j];
nums[j]=t;
}
}