使用反转数组的方式实现数组的移位。具体地,将要移位的数组分成两部分:A 和 B。A 部分的长度为 n,B 部分的长度为 m。移位操作通过以下三个步骤实现:
移位后,B 部分会移动到数组的前面,A 部分会移动到数组的后面。这个操作的时间复杂度是 O(1)。
下面是示例代码实现:
def reverse_array(arr, start, end):
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start += 1
end -= 1
def shift_array(arr, m):
n = len(arr)
reverse_array(arr, 0, n - 1) # 反转整个数组
reverse_array(arr, 0, m - 1) # 反转前半部分
reverse_array(arr, m, n - 1) # 反转后半部分
使用以上代码,可以将数组 arr 向左移动 m 个位置,实现了 O(1) 时间复杂度的移位操作。