题解 | #旋转数组#
class Solution { public: /** * 旋转数组 * @param n int整型 数组长度 * @param m int整型 右移距离 * @param a int整型vector 给定数组 * @return int整型vector */ vector<int> solve(int n, int m, vector<int>& a) { if (m == 0) return a; int moveN = 0; for (int i = 0; i < n; i++) { int j = (i + m) % n; int tmp = a[i]; while (j != i) { swap(tmp, a[j]); moveN++; j = (j + m) % n; } swap(tmp, a[j]); moveN++; if (moveN >= n) break; } return a; } };