题解 | #旋转数组#
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;
}
};
查看1道真题和解析
