题解 | #调整牛群的位置#

调整牛群的位置

https://www.nowcoder.com/practice/cfa2130da69449229d8159561d39b0d3

知识点

思维,数组函数

思路

首先我们假设数组长度为n,现将k%=n,因为可以先除去周期性。 我们知道,k次移位代表着前k个数的相对位置和后n-k个数交换,且内部次序不变。对数组的部分片段翻转2次,不会改变内部的相对顺序,对两个部分进行1次翻转,既会改变内部顺序,也会改变两个部分的相对顺序。

所以我们可以先对两个部分分别翻转,再整体反转,将内部次序保持一致,外部次序保持逆序。 例:对ABCDE FGHIJ 先翻转两个部分:EDCBA JIHGF 再整体反转: FGHIJ ABCDE 得到了想要的东西

代码

#include <iterator>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param k int整型 
     * @return int整型vector
     */
    vector<int> rotate_left(vector<int>& nums, int k) {
        // write code here
        int n=nums.size();
        k%=n;
        reverse(nums.begin(),nums.begin()+k);
        reverse(nums.begin()+k,nums.end());
        reverse(nums.begin(),nums.end());
        return nums;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
练习生懒羊羊:开飞机把这个公司创飞吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务