题目链接: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.
Hint:
Could you do it in-place with O(1) extra space?
Related problem: Reverse Words in a String II
*
*/
public class RotateArray {
// 33 / 33 test cases passed.
// Status: Accepted
// Runtime: 230 ms
// Submitted: 0 minutes ago
public void rotate(int[] nums, int k) {
k = k % nums.length;
reverse(nums, 0, nums.length - k);
reverse(nums, nums.length - k, nums.length);
reverse(nums, 0, nums.length);
}
public void reverse(int[] nums, int left, int right) {
while(left < right)
exch(nums, left++, --right);
}
public void exch(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
public void rotate1(int[] nums, int k) {
k = k % nums.length;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}