码上快乐
1秒登录
首页
榜单
标签
关于
搜索
相关内容
简体
繁体
数字循环右移 解题报告
本文转载自
查看原文
2019-12-16 15:28
377
数字循环右移
题目如下:
一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0 a1 ⋯an−1 )变换为(an−m ⋯an−1 a0 a1 ⋯an−m−1 )(最后m个数循环移至最前面的m个位置)。
我的思路:
题目明确告诉我们要将每个整数循环向右移动,所以这题可以嵌套循环,逐个移动,容易理解,但效率相对低一点。使用链表可以提高效率。解决这个问题我们需要知道用户传入数据的数量n以及移动的位数m。
方法一:
创建一个数组保存用户传入的数据,每一次循环中先将数组的最后一个数保存到临时变量里,然后逐个右移赋值,再将临时变量赋值给第一个数组元素,进行m个循环即可。
流程图如下:
方法二:
使用尾插法建立一个链表存放用户传入的数据,先连后断,先让表尾指向表头,再找到指定的位置断开并把断开后的下一个结点作为表头
核心代码如下:(建立链表部分省略)
其中m=m%n是为了减少重复循环,for循环是为了找到需要断开的结点。
至于流程图,咕wo咕bu咕hui咕hua。
×
免责声明!
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。
猜您在找
POJ解题报告
男人八题解题报告
2020.08.27考试解题报告
五校联考解题报告
2019.10.13考试解题报告
2019.10.11考试解题报告
LeetCode: Subsets 解题报告
PTA 数组循环右移
Java数列循环右移
Lintcode: Subarray Sum 解题报告
粤ICP备18138465号
© 2018-2025 CODEPRJ.COM