|怎么实现旋转数组呢?

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片

|怎么实现旋转数组呢?

文章图片



刷题“旋转数组”


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

刷题思路:也不弄高大上 , 就从基本的迭代位移来做:
1.函数f1:实现右移一位的函数f1
2.函数f2:右转轮k个位置 , 就执行k次f1 。
具体代码1、实现右移一位的函数f1
注意1:右移一位时 , 需要将最右边的数据 , 移到最左边 , 故需要一个缓存数据temp 。 注意2:为了不影响后续调用 , 指针需要移动到最左边(数组头部) 。 2.实现转轮函数f2:右转轮k个位置 , 就执行k次f1
3、为了便于观察 , 打印数组前4个元素 , 后4个元素
4、运行main
局部变量nums数组内元素是从lc中拷贝的测试例程数据 , 原来有100k个元素 , 这里先注释部分 , 只保留有4913个元素 , 轮转5次 , 结果符合预期 。 异常点
1、将main中局部变量nums , 取消注释 , 恢复100k个元素 , 进行编译 , 编译器就处于编译状态 , 无法完成 。 2、网上查资料后 , 发现是由于默认的栈大小3、选择最简单的方式 , 将数组改为“static”型 , 编译通过 。
4、然后在main中定义一个100k长度的数组 , 重新赋值 , 可以运行 。之前不定长数组中放入100k个数据 , 不可以运行 。
5、将原100k长度数组 , 改为1M数组 , 报错 。

6、将此1M数组设为全局变量 , 运行正常 。

说明的确是栈空间分配问题 , 导致大数组编译异常 。
结果
然后我把上面测试的f1、f2函数 , 修改名称后 , 放入lc , 执行正确(有限数组) 。 提交超时...【|怎么实现旋转数组呢?】满屏测试数组(100k个元素) , 也是很崩溃啊 。。。