博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 189. Rotate Array
阅读量:6296 次
发布时间:2019-06-22

本文共 717 字,大约阅读时间需要 2 分钟。

Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]

 

首先题意理解清楚,k表示执行k次将最后一个元素移到第一个。

这样就会出现k大于vector的大小的情况,刚开始不理解题意,以为要将后面k个元素移到前面而已。

但当出现k大于vector的大小的时候,就不对了。

这时候取k%size就可以

 

先说这个题的核心想法吧:

拿把k元素从后面移到前面,可以分三步

(1)先把size-k个元素逆置

(2)再把后面k个元素逆置

(3)最后整体逆置

结果圈圈画画就可以看出来了

 

1 class Solution { 2 public: 3     void rotate(vector
& nums, int k) { 4 int s=nums.size(); 5 int c=0; 6 c=s-k%s; 7 reverse(nums.begin(),nums.begin()+c); 8 reverse(nums.begin()+c,nums.end()); 9 reverse(nums.begin(),nums.end());10 11 }12 };

 

转载于:https://www.cnblogs.com/LUO77/p/5099697.html

你可能感兴趣的文章
中国大陆开源镜像站汇总
查看>>
Different Layouts for Different Widths
查看>>
关于cisco与中兴三层设备ospf互连
查看>>
vs2015_ef 连接mysql
查看>>
HTML5 手写板签名
查看>>
STL容器类
查看>>
RPA学习-关于读 csv 文件报错问题
查看>>
mac composer 使用
查看>>
PDF怎么测量尺寸
查看>>
改造Dubbo,使其可以对接口方法进行注解配置
查看>>
MySQL默认配置文件位置发生改变后如何查找
查看>>
C#操作数据库
查看>>
我的友情链接
查看>>
配置ELK添加marvel插件
查看>>
Oracle 内存一 手动内存管理,自动内存管理
查看>>
我的友情链接
查看>>
Mysql学习笔记【原创】
查看>>
ssm配置多数据库支持
查看>>
JVM内存分配与垃圾回收浅析
查看>>
Android零基础入门第65节:RecyclerView分割线开发技巧
查看>>