以k个步骤向右旋转n个元素的数组。
例如,当n = 7和k = 3时,数组[1,2,3,4,5,6,7]
被旋转到[5,6,7,1,2,3,4]
。
package leetcode;
public class leetcode9 {
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--;
}
}
public void rotate(int[] nums, int k) {
k=k%nums.length;//如果k的长度比数组的长度长的话则取余
reverse(nums,0,nums.length-1);
reverse(nums,0,k-1);
reverse(nums,k,nums.length-1);
// int[] num1=new int[nums.length-k];
// for(int i=0;i<nums.length-k;i++)
// {
// num1[i]=nums[i];
// }
// for(int i=0;i<k;i++)
// {
// nums[i]=nums[nums.length-k+i+1];
// }
// int j=0;
// for(int i=k+1;i<nums.length;i++)
// {
// nums[i]=num1[j];
// j++;
// }
}
}