我们需要将数组中的前面 n - m
个数顺序向后移动 m
个位置,同时将最后 m
个数移动到数组的前面。这可以通过三步操作来实现:
n - m
个数逆序。m
个数逆序。解题思路:
n - m
个数逆序。m
个数逆序。代码:
def rotate_array(arr, n, m):
if not arr or n <= 0 or m < 0 or m >= n:
return arr
# Reverse the first n - m elements
arr[:n - m] = arr[:n - m][::-1]
# Reverse the last m elements
arr[n - m:] = arr[n - m:][::-1]
# Reverse the entire array
arr.reverse()
return arr
# Test the function
arr = [1, 2, 3, 4, 5, 6, 7]
n = 7
m = 3
print("Original array:", arr)
result = rotate_array(arr, n, m)
print("Array after rotation:", result)
优点:
缺点:
解题思路:
n - m
个元素和后面 m
个元素。代码:
def rotate_array(arr, n, m):
if not arr or n <= 0 or m < 0 or m >= n:
return arr
arr[:n - m], arr[n - m:] = arr[m:], arr[:n - m]
return arr
# Test the function
arr = [1, 2, 3, 4, 5, 6, 7]
n = 7
m = 3
print("Original array:", arr)
result = rotate_array(arr, n, m)
print("Array after rotation:", result)
优点:
缺点:
解题思路:
n - m
个数和后面 m
个数分别取出。m
个数和前面 n - m
个数拼接成新数组。代码:
def rotate_array(arr, n, m):
if not arr or n <= 0 or m < 0 or m >= n:
return arr
rotated_arr = arr[m:] + arr[:m]
return rotated_arr
# Test the function
arr = [1, 2, 3, 4, 5, 6, 7]
n = 7
m = 3
print("Original array:", arr)
result = rotate_array(arr, n, m)
print("Array after rotation:", result)
优点:
缺点:
综上所述,推荐使用逆序操作(方法一)实现数组中的向后移动和交换。