# LeetCode - 0189. Rotate Array
### 題目網址:https://leetcode.com/problems/rotate-array/
###### tags: `LeetCode` `Medium`
```cpp=
/*
-LeetCode format-
Problem: 189. Rotate Array
Difficulty: Medium
by Inversionpeter
*/
class Solution {
int GCD(int a, int b) {
int buffer;
while (b)
buffer = a, a = b, b = buffer % b;
return a;
}
public:
void rotate(vector<int>& nums, int k) {
k %= nums.size();
if (!k)
return;
int groups = GCD(nums.size(), k), groupSize = nums.size() / groups;
for (int i = 0, now = 0; i < groups; ++i, now = i) {
for (int j = 1; j < groupSize; ++j) {
if ((now += k) >= nums.size())
now -= nums.size();
swap(nums[i], nums[now]);
}
}
}
};
```