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

调整牛群的位置

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;
    }
};
全部评论

相关推荐

06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
练习生懒羊羊:开飞机把这个公司创飞吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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