题目链接:https://leetcode.com/problems/rotate-array/
题目:
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.
public void rotate(int[] nums, int k) { if (k > nums.length) { k = k % nums.length; } int tmp[] = (int[]) nums.clone(); for (int i = 0; i < k; i++) { nums[i] = tmp[tmp.length - k + i]; } for (int i = 0; i < (tmp.length - k); i++) { nums[k + i] = tmp[i]; } }
public void rotate(int[] nums, int k) { k = k % nums.length; nums = reverse(nums, 0, nums.length-k-1); nums = reverse(nums, nums.length-k,nums.length-1); nums = reverse(nums, 0, nums.length-1); } public int [] reverse(int[] arr, int left, int right){ if(arr == null || arr.length == 1) return arr; for(int i=0;i<(right-left+1)/2;i++){ int tmp = arr[left+i]; arr[left+i] = arr[right-i]; arr[right-i] = tmp; } return arr; }