leetcode:旋转数组

本文深入解析LeetCode中旋转数组问题,提供C++代码实现,探讨原地算法概念,并分享高效解题思路,包括数组反转技巧,助你快速掌握算法精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
感觉真的写的好简洁啊~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值