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]
.
1 public class Solution { 2 public void rotate(int[] nums, int k) { 3 if(nums.length == 0 || k % nums.length == 0 || nums.length == 1) 4 return; 5 int nums_copy[] = new int[nums.length]; 6 k = k % nums.length; 7 k = nums.length - k; 8 for(int i = 0; i < nums.length; i++){ 9 if(k >= nums.length) 10 k = 0; 11 nums_copy[i] = nums[k++]; 12 } 13 14 for(int i = 0; i < nums.length; i++) 15 nums[i] = nums_copy[i]; 16 } 17 }
这道题比较简单,还有其他方法,明天再看看
原文:http://www.cnblogs.com/luckygxf/p/4314507.html