zoukankan
html css js c++ java
数字循环右移 解题报告
数字循环右移
题目如下:
一个数组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。
查看全文
相关阅读:
常用模块
二分查找算法
递归函数
文件操作
day02--Python基础二(基础数据类型)
Python学习笔记day01--Python基础
Python2X和Python3X的区别
testdisk修复文件系统
机器学习入门 快速版
tableau教程 快速入门
原文地址:https://www.cnblogs.com/zxc12/p/12049360.html
最新文章
Four Ways to Read Configuration Setting in C#(COPY)
log4net的配置及使用
运行时报:尝试加载 Oracle 客户端库时引发 BadImageFormatException,如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题
简单解决 VMWare “无法打开内核设备:\Global\vmx86”错误
提示Can't load package:dclite70.bpl解决方法
easyui layout 折叠之后显示标题
jquery easyui datagrid/table 右边线显示不全
Easyui datebox单击文本框显示日期选择 eayui版本1.5.4.1
SQLServer+.net 事务锁表问题
TortoiseSVN客户端安装遇到的问题汇总
热门文章
vux scroller在iOS13上,一停止滑动就跳到顶部
使用rxjs以及javascript解决前端的防抖和节流
vue报错: Class constructor FileManager cannot be invoked without 'new'.
高德,微信公众号,企业微信获取定位
es6 Decorator修饰器
typescript泛型
通过inspect在电脑的Chrome上查看手机上的H5
vue中 关于$emit的用法
js密码加密
promise、async和await
Copyright © 2011-2022 走看看