|怎么实现旋转数组呢?
文章图片
文章图片
【|怎么实现旋转数组呢?】
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
刷题“旋转数组”
给你一个数组 , 将数组中的元素向右轮转 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个元素) , 也是很崩溃啊 。。。
- 用户流失|用户流失,该怎么分析?
- |水深套路多,二手机到底怎么买才不会被坑?
- 电池|iPhone11及以上更换非原装电池之后,怎么取消通知弹窗?
- 中国科学网|圆心科技贡献保险智慧与力量,驱动普惠健康险实现强保障、优服务
- 全面屏|春季打造12代酷睿主机要注意,机电散你知道该怎么选择吗?
- 跑分|刘强东承诺五年后送套房,京东的001号快递员如今怎么样了?
- iqoo neo|iQOO“双机”降价,均搭载骁龙888处理器,到底该怎么选?
- 龙芯|又一个国产5G芯片问世,预计今年实现量产,性能达到主流水准
- CPU|安卓手机处理器怎么选?遵循这个原则,让你少走弯路少踩坑!
- apk|我说安卓系统在国外怎么这么流畅