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

调整牛群的位置

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

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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