实现一个数组向左或者向右轮转k个单位
使用程序是 Dev C++
以 int a[ ]={1,2,3,4,5,6};为例.
刚开始学算法的时候
我尝试用暴力的求下标的方法
直接给最复杂耗时的做法
我尝试用相加和取模的方法,结合 if 算法暴力求出每一个变换之后的坐标
与此同时,一次错误的输入让我意识到,超过总元素个数的数字,例如 7 输入的时候就会出错
这里取个模也是有点取巧。
在学习了指针之后,我也尝试用更加暴力的指针访问来解决
每一步实现取出第一个元素放到数组的末尾,只需要调整步数即可
在查阅一些资料之后,我也发现有一些比较逆天的妙计
代码如下:有些书籍美其名曰 三步翻转法
先按照反转的步数划分数组
前一部分和后一部分分
这里的reverse函数的设置也是分别从数组的两头开始一一对应翻转数组
在此基础上,可以追加1、查找数组是否为原数组翻转得到
2、计算翻转所需要的次数