轮转数组(189)(c++)

OK啊兄弟们,今天我们来看一道非常经典的编程题,轮转数组。
题目链接如下:
轮转数组


题目分析

首先我们来看这道题目
轮转数组
很明显,其实我们这道题目是不太涉及什么复杂的算法的,甚至说就是一个纯粹的数学问题。
明白了这一点之后,我们就能很好的以一个小白的视角来看待这些题了。

轮转规律
ok在我们仔细的寻找下,我们可以发现每当轮转一次,给定数组的最后一个元素就会变成轮转后的第一个元素,而其他数组的索引往后排一位,那么根据这个,我们就可以通过它的索引的规律入手进行求解:
每当轮转一次,最后一个元素的索引应该都变为1,其他元素都后退一位。
以下是示例代码。

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n =nums.size();
        vector<int> num1(n);
        for (int i = 0;i<n;i++)
        {
            num1[(i+k)%n] = nums[i];
        }
        nums.assign(num1.begin(),num1.end());
    }
};

这种方法为官方题解,也与我的想法不谋而合,在处理这种题目的时候,有一个清醒且灵活的头脑是比较重要的,题目难度并不大,但感觉是比较经典的,可以好好总结一下。
就这样,Respect。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值