题解 | 旋转数组
旋转数组
https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042
题解中的b和c还是使用了新的数组。
可以写一个新办法一个一个换。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 旋转数组
# @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 = m % n
def reverse(arr, start, end):
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start += 1
end -= 1
# 反转整个数组
reverse(a, 0, n - 1)
# 反转前 m 个元素
reverse(a, 0, m - 1)
# 反转剩余的 n - m 个元素
reverse(a, m, n - 1)
return a

查看12道真题和解析