leetcode:旋转数组

Leetcode(初级算法):旋转数组

题目

在这里插入图片描述

思路

这道题确实比较简单,通过观察可以看出:
1、当旋转步数小于数组长度时,旋转结果相当于把数组后k个元素直接放到数组最前面;
2、当旋转步数大于数组长度时,我们可以知道他已经旋转了一周回到原位再旋转多余的步长,即旋转了k%len步(k为旋转步长,len为数组长度)
(第一次提交只考虑了第一种情况,太马虎辽~)
还有值得注意的是题目要求的原地算法
原地算法:当算法执行时,输入的资料通常会被要输出的部份覆盖掉。
详细见词条:https://baike.baidu.com/item/原地算法/8010757?fr=aladdin
所以我理解的是改变的是输入数组本身。

代码(C++)

在这里插入图片描述
在这里插入图片描述

其他思路

看到有的博主写的很好,十分值得借鉴,思路大概是:先把数组全部反转,然后再依次反转前k个数据和最后n-k个数据
思路链接:https://www.cnblogs.com/mikemeng/p/8981596.html
感觉真的写的好简洁啊~
在这里插入图片描述

发布了4 篇原创文章 · 获赞 1 · 访问量 204

猜你喜欢

转载自blog.csdn.net/weixin_43870424/article/details/86984167