189. Rotate Array(兩次反轉)
阿新 • • 發佈:2018-02-22
blog pic show least hint his rip ted file
DescriptionHintsSubmissionsDiscussSolution Pick One
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.
[show hint]
Related problem: Reverse Words in a String II
1 class Solution { 2 public void rotate(int[] nums, int k) { 3 k%=nums.length; 4 if(k==0) return; 5 6 7 reverce(nums,0,nums.length-1); 8 reverce(nums,0,k-1); 9 reverce(nums,k,nums.length-1);10 } 11 private void reverce(int[] a,int i,int j){ 12 for(int k = 0;k <= (j-i)/2;k++){ 13 swap(a,i+k,j-k); 14 } 15 } 16 private void swap(int[] a,int i ,int j){ 17 int temp = a[i]; 18 a[i] = a[j]; 19 a[j] = temp; 20 } 21 }
189. Rotate Array(兩次反轉)