1. 程式人生 > >189. Rotate Array(兩次反轉)

189. Rotate Array(兩次反轉)

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(兩次反轉)