题解 | 旋转数组
旋转数组
https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 旋转数组
# @param n int整型 数组长度
# @param m int整型 右移距离
# @param a int整型一维数组 给定数组
# @return int整型一维数组
#
from typing import List
class Solution:
def solve(self, n: int, m: int, a: List[int]) -> List[int]:
# 处理m可能大于n的情况
m = m % n
if m == 0:
return a
# 三次反转法 - 空间O(1),时间O(n)
# 1. 反转整个数组
a.reverse() # Python内置反转
# 2. 反转前m个
a[:m] = reversed(a[:m])
# 3. 反转剩下的
a[m:] = reversed(a[m:])
return a
三反转真遇上了,反而在机考上不能用,能感觉到重复率一片一片的
