首页 > 编程语言 >算法--模拟法

算法--模拟法

时间:2022-08-18 22:59:36浏览次数:59  
标签:右移 模拟法 -- begin int 算法 vector 数组 翻转

 

 

方法:三次翻转(推荐使用)

思路:

循环右移相当于从第mmm个位置开始,左右两部分视作整体翻转。即abcdefg右移3位efgabcd可以看成AB翻转成BA(这里小写字母看成数组元素,大写字母看成整体)。既然是翻转我们就可以用到reverse函数。

具体做法:

  • step 1:因为mmm可能大于nnn,因此需要对nnn取余,因为每次长度为nnn的旋转数组相当于没有变化。
  • step 2:第一次将整个数组翻转,得到数组的逆序,它已经满足了右移的整体出现在了左边。
  • step 3:第二次就将左边的mmm个元素单独翻转,因为它虽然移到了左边,但是逆序了。
  • step 4:第三次就将右边的n−mn-mn−m个元素单独翻转,因此这部分也逆序了。

 

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
        m = m% n;
        reverse(a.begin(),a.end());
        reverse(a.begin(),a.begin()+m);
        reverse(a.begin()+m,a.end());
        return a; 
    }
};

  

 

标签:右移,模拟法,--,begin,int,算法,vector,数组,翻转
From: https://www.cnblogs.com/jerry-autumn/p/16600399.html

相关文章

  • 玉米田
    玉米田农夫约翰的土地由$M\timesN$个小方格组成,现在他要在土地里种植玉米。非常遗憾,部分土地是不育的,无法种植。而且,相邻的土地不能同时种植玉米,也就是说种植玉米的......
  • 快排
    快排例1给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组右边,要求额外空间复杂度O(1),时间复杂度O(N)解法:0、我们指定一块区域,称之为......
  • linux下Screen常用命令
    常用命令:Screen screen-Syourname->新建一个叫yourname的sessionscreen-ls->列出当前所有的sessionscreen-ryourname->回到yourname这个sessionscreen-d......
  • c语言中函数式宏
     001、#include<stdio.h>#definediff(x,y)(x-y)##函数式宏,diff函数中的参数,将按照(x-y)在函数中展开intmain(void){inta,b;doublem,n......
  • IDEA简单两步实现标签栏多层显示+显示个数上限设置方法
        简单两步 File-->        setting-->                Editor-->            ......
  • Python3项目初始化7--ORM及其项目修改
    22、DjangoORM介绍配置数据库引擎,setting操作。##CREATEDATABASEcmdb_userDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;DATABASES={'default':......
  • Detectron2使用
    Detectron2使用Detectron2安装gitclonehttps://github.com/facebookresearch/detectron2.gitcddetectron2pythonsetup.pybuilddevelop......
  • 函数的递归
    2.函数的递归的定义函数的递归调用:是函数嵌套调用的一种特殊形式具体是指:在调用一个函数的过程中又直接或者间接的调用到本身,是一个死循环,最大递归是1000次,超出之后报错......
  • 23届秋招美团内推推推!开始啦!!
    自我介绍本人为20届应届生,在19年秋招期间,拿到了网易、小米、美团等企业的Offer,最后和美团双向奔赴,在美团工作的这两年,可以说是收获满满,推荐大家来到美团这个温暖的......
  • go 接口 实现sort排序接口 进行自定义排序
    packagemainimport("fmt""math/rand""sort")//学生结构体typeStudentstruct{NamestringIdstringAgeint}typeStudentA......