class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 旋转数组 * @param n int整型 数组长度 * @param m int整型 右移距离 * @param a int整型vector 给定数组 * @return int整型vector */ /* 观察式子,6,2 [1,2,3,4,5,6] 右移2位的结果等价于: 1. 反转整个数组 [6,5,4,3,2,1] 2. 反转数组开始到第2位,[5,6,4,3,2,1] 3. 反转数组从第2位到最后 [5,6,1,2,3,4] 发现有此次规律,我们可以大胆假设,然后小心验证测试一下 */ vector<int> solve(int n, int m, vector<int>& a) { // write code here m = m % n; // 容易知道,当 m >= n时右移的情况会与 m < n中的一种情况相重。所以取余即可 //1 reverse(a.begin(), a.end()); //2 reverse(a.begin(), a.begin() + m); //3 reverse(a.begin() + m, a.begin() + n); return a; } };