PAT-B] 1008. 数组元素循环右移问题 [模拟]
题意
题意应该不难理解。
首先给两个数N, M
,分别表示数组的大小和右移几位
也就是说第1
位数移动到M + 1
位,以此类推。
而多出来的数则放在数组的前面。
很像小时候玩的贪吃蛇。
比如样例:6 2
1 2 3 4 5 6
先是前面的四个数都右移两位:_ _ 1 2 3 4
然后多出来的5, 6
移动到数组前面:5 6 1 2 3 4
分析
题目理解起来并不难。不过要注意几点:
- 给的
M
可能会比N
要大,也就是说可能右移了好几圈。
比如在400
米的操场上跑步,跑100
米和跑500
米最后停的位置是一样的。
所以这里我们要对M
进行处理,让M
对N
取模(M % N
),得到有效的偏移量 - 说是右移,其实我们可以在存入数组的时候直接把元素放在合适的位置。假装我们已经右移了。
(当然想要严格按题意来的可以忽略这一点)
代码
|
|
小结
毕竟OJ都是只看结果的呢…