题目:
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]
.
这题其实是关于数组中的数字反转的题,这里的k有可能会大于这个7,其实很简单,只要拿到k,先用这个k来对这个数组的长度取一个余,然后得到的那个结果我需要的,再从这个数组的后面去进行反转。
public class Solution
{
public void rotate(int[] nums,int k)
{
int length = nums.length;
int[] n = new int[length];
int j = 0;
k = k % length;
for(int i = length - k ; i <= length - 1; i++,j++)
{
n[j] = nums[i];
}
for(int i = 0; i <= length - 1 - k ; i++,j++)
{
n[j] = nums[i];
}
for(int i = 0; i < length; i++)
nums[i] = n[i];
}
}
这里我是采用了两个数组来模拟,将前一个数组的数字进行反转,然后将反转后的数字放到后一个数组中。