思路
三次翻转:先翻转整体,再翻转数组[:m],最后翻转数组[m:]
注意:数组.reverse()无返回值
m可能大约n,m=m%n,若余数为0,相当于没翻转
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 旋转数组
# @param n int整型 数组长度
# @param m int整型 右移距离
# @param a int整型一维数组 给定数组
# @return int整型一维数组
#
class Solution:
def solve(self , n: int, m: int, a: List[int]) -> List[int]:
# 三次翻转
m=m%n
if m==0:
#m可能大于n,需要m%n,若余数为0,相当于选择长度为n,即还是原数组
return a
#先对数组整体翻转,右移的整体出现在了左边,无返回值
a.reverse()
#将左边m个元素翻转
b=a[:m]
b.reverse()
#将右边n-m个元素翻转
c=a[m:]
c.reverse()
a[:m]=b
a[m:]=c
return a