原题:
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?
Could you do it in-place with O(1) extra space?
解答1:
note:将数组视为一个收尾相接的圈
class Solution {
public void rotate(int[] nums, int k) {
int i = 0;
int temp = 0;
for(int j = 0;j < nums.length;j++){
int q = (i+k)%nums.length;
temp = nums[q];
nums[q] = nums[i];
i = q;
}
}
}