"""
轮转数组
给定一个整数数组numbers,
将数组中的元素向右轮转x个位置,
其中,x是非负数。
"""
def reverse(numbers, start, end):
"""
反转数组中指定范围的元素。
参数:
numbers -- 要操作的数组
start -- 反转的起始索引
end -- 反转的结束索引
"""
while start < end:
# 交换数组中指定范围的元素
numbers[start], numbers[end] = numbers[end], numbers[start]
start += 1
end -= 1
def rotate(numbers, x):
"""
将数组向右旋转x个位置。
参数:
numbers -- 要操作的数组
x -- 旋转的位置数
"""
length = len(numbers)
# 处理x大于数组长度的情况,确保x为有效的旋转位置数
x %= length
# 反转整个数组,为后续旋转做准备
reverse(numbers, 0, length - 1)
# 反转数组的前x个元素
reverse(numbers, 0, x - 1)
# 反转数组的剩余部分,完成旋转
reverse(numbers, x, length - 1)
# 测试代码
numbers = [1, 2, 3, 4, 5, 6, 7]
rotate(numbers, 5)
print(numbers)
评论前必须登录!
注册