当前位置: 首页 > news >正文

leetcode189.轮转数组|超简单易于理解方法

 题目

https://leetcode.cn/problems/rotate-array/description/icon-default.png?t=N7T8https://leetcode.cn/problems/rotate-array/description/

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

分析

假设下面是一个数组:

假设k=2,如下图,也就是将粉色部分与蓝色部分互换位置

分析如下:

第一步 将整个数组逆置

 第二步 将蓝色部分,也就是前k个元素逆置

 第三步 将红色部分,也就是数组中剩余的元素逆置

最后得到想要的结果

代码

class Solution {
public:void rotate(vector<int>& nums, int k) {//如果k的大小超过数组长度是没有意义的,应该让k模上数组大小k%=nums.size();//然后对整个数组进行翻转reverse(nums.begin(),nums.end());//接着翻转前k个数字reverse(nums.begin(),nums.begin()+k);//最后翻转剩余的数字reverse(nums.begin()+k,nums.end());}
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(1) 

相关文章:

  • Elasticsearch:如何为 Elastic Stack 配置 AI Assistant
  • ElementUI 组件:Container 布局容器实例
  • C# WebServices代理类
  • 面试经典 150 题 -- 数组 / 字符串 (总结)
  • 【Spring连载】使用Spring Data访问Redis(十四)----Redis Repositories
  • 【中国善网ESG周报】企业ESG报告分析之“美的”
  • jupyter notebook显示的扩展很少,只有四五个--解决方案
  • ROS中的GPS RTK 坐标轨迹可视化
  • 猫什么时候发腮?猫咪发腮指南!这些生骨肉冻干发腮效果好
  • LeetCode:283. 移动零
  • 8. 字符串转换整数 (atoi)-LeetCode(Java)
  • 【ArcGIS Pro】从0开始
  • debian 基于树莓派raspberry最新的daily build img镜像下载地址
  • 从汇编层面理解C++ this指针
  • dubbo rpc序列化
  • Angular4 模板式表单用法以及验证
  • css选择器
  • Docker入门(二) - Dockerfile
  • es6--symbol
  • Java 23种设计模式 之单例模式 7种实现方式
  • Javascript基础之Array数组API
  • JS+CSS实现数字滚动
  • MySQL的数据类型
  • React Native移动开发实战-3-实现页面间的数据传递
  • Sublime text 3 3103 注册码
  • vagrant 添加本地 box 安装 laravel homestead
  • ViewService——一种保证客户端与服务端同步的方法
  • vue-loader 源码解析系列之 selector
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 分布式熔断降级平台aegis
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端工程化(Gulp、Webpack)-webpack
  • 微信支付JSAPI,实测!终极方案
  • 协程
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 交换综合实验一
  • ​第20课 在Android Native开发中加入新的C++类
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (二)linux使用docker容器运行mysql
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)模仿学习-完成后台管理页面查询
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .Net的DataSet直接与SQL2005交互
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • /dev/sda2 is mounted; will not make a filesystem here!
  • ??myeclipse+tomcat
  • @reference注解_Dubbo配置参考手册之dubbo:reference