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]
.
class Solution {
public:
void rotate(vector<int>& nums, int k) {
if (k <= 0) return;
int len = nums.size();
k = k%len;
int i = 0, j = len - k - 1;
while (i < j){
swap(nums[i++], nums[j--]);
}
i = len - k, j = len - 1;
while (i < j){
swap(nums[i++], nums[j--]);
}
i = 0, j = len - 1;
while (i < j){
swap(nums[i++], nums[j--]);
}
}
};