题目:
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]
.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
1 public class Solution { 2 public void rotate(int[] nums, int k) 3 { 4 k = k % nums.length; 5 int length=nums.length; 6 reverse(nums,0,length-1); 7 reverse(nums,0,k-1); 8 reverse(nums,k,length-1); 9 return; 10 11 } 12 13 private void reverse(int[] nums, int start, int end) 14 { 15 for(int i = start, j=end; i<j;i++,j--) 16 { 17 int temp=nums[i]; 18 nums[i]=nums[j]; 19 nums[j]=temp; 20 } 21 22 } 23 }