题目
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.
Related problem: Reverse Words in a String II
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
代码
public class Solution { public void rotate(int[] nums, int k) { int len=nums.length; if(k==0 || k==len) return; if(k>len) k=k-len; int[] result=new int[len]; int result_index=0; int j=0; for(int i=k;i>=1;i--){ result[result_index]=nums[len-i]; result_index++; } while(result_index<len){ result[result_index]=nums[j]; result_index++; j++; } for(int m=0;m<len;m++){ nums[m]=result[m]; } } }
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/