一个数组A中有N个元素,在不允许使用另外数组的前提下,将每个整数循环向右移M个位置,最后M个数循环至最前面的M个位置。
- 第一次尝试
倒腾了很久,把自己也绕进去了。修改了很多次,样例输出的结果对是对了。但是,经过一位好心学长的提醒,才发现我忽略了M>N这种情况。(估计没人看得下去我的代码😂)
- 第二次尝试
然后换了一种方法做,想着另外找个东西将数组a中的数据存储下来(也许叫备份?我也不清楚),我还在csdn上提问过因为我想到了用数组b来备份,结果输出结果怎么也不对。后来检查才发现,输入时M.N的位置写反了,输出条件也有一丢丢小错误。当一股成就感扑面而来时,我又看了看题目。“在不允许使用另外数组的前提下”!我无了。瞬间跌入谷底。但是不得不说a[(i+M)%N]=b[i]这种思路真的很妙。
- 第三次尝试
我不太清楚这里的y应该叫做什么?中间量?备注?or其他?大概思路就是a[N-1]中的元素赋值给y,然后从a[N-2]依次向右移一位,再将y的值赋给a[0],此为一次后移。继续循环,直至移至M次结束。over.运行无错误.
-
谈谈给我的感想吧。第一次呢,做是好像做出来了,但是考虑不太全面;第二次呢,犯了些细节错误但是做出来了,但但是审题不清,没看到不能再用一个数组;第三次呢,思路有了,但是脑袋有点转不过弯,毕竟这个题绕了一两个小时,做了几十分钟才写出来。幸好,对了。虽说这个做题途中的,心情是有过烦躁的,但是还好不像从前那样直接放弃转而搜答案,而是慢慢思考慢慢理顺,这也是很大的收获。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)