题解 | #旋转数组#

旋转数组

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;
    }
};

全部评论

相关推荐

牛客583549203号:腾讯还好,况且实习而已,实习生流动性很大,属于正常现象,记得和HR委婉解释
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务