有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。写一个函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个整数。
时间: 2023-12-20 14:52:43 浏览: 67
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
以下是一个实现上述功能的 Python 代码:
```python
def shift_list(arr, m):
n = len(arr)
# 对于 m > n 的情况,我们可以取模减少移动次数
m = m % n
# 将前 n - m 个数逆序
for i in range((n - m) // 2):
arr[i], arr[n - m - i - 1] = arr[n - m - i - 1], arr[i]
# 将后 m 个数逆序
for i in range(m // 2):
arr[n - i - 1], arr[n - m + i] = arr[n - m + i], arr[n - i - 1]
# 将整个数组逆序
for i in range(n // 2):
arr[i], arr[n - i - 1] = arr[n - i - 1], arr[i]
return arr
# 示例
arr = [1, 2, 3, 4, 5, 6, 7]
m = 3
shifted_arr = shift_list(arr, m)
print(shifted_arr) # 输出 [5, 6, 7, 1, 2, 3, 4]
```
上述代码中,我们首先对 m 取模,这是因为如果 m > n,我们可以将其看作是向后移动 m % n 个位置。接下来,我们将前 n - m 个数逆序,将后 m 个数逆序,最后将整个数组逆序即可得到结果。
阅读全文