# 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]); } } } }; ```