题解 | #旋转数组#
旋转数组
https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042
#include <vector> 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) { // write code here //如果右移距离为0,直接返回 if(m==0){ return a; } int temp=a[0]; // count 右移一位的次数 int count=0; // 一次循环是右移一位 while(count<m){ // 用temp存储每次的a[0] a[0]直接和a[n-1]交换 temp=a[0]; a[0]=a[n-1]; // 然后从数组下标为1的数据开始,和temp进行数据交换,这样就整体右移了一位 for(int i=1;i<n;i++){ int x; x=a[i]; a[i]=temp; temp=x; } // 右移次数++ count++; } return a; } };