题目

从标准输入读入 n 个整数,使用双指针(或索引对)相向收缩的方式实现列表元素的就地逆序并输出。

输入格式:第一行输入元素个数 n;第二行输入 n 个整数。

输出格式:在一行中输出逆序后的数组,以空格分隔,末尾换行。

数据范围与约定:1 ≤ n ≤ 500。

思路与算法

1. 双指针迭代
设置左指针 i = 0,右指针 j = n - 1,在 i < j 期间互换 a[i], a[j] = a[j], a[i]。

2. 空间复杂度
原地操作,无需开辟新列表空间,空间复杂度为 O(1)。

完整程序

n = int(input())
a = list(map(int, input().split()))

# 双指针原地逆序列表元素
i, j = 0, n - 1
while i < j:
    a[i], a[j] = a[j], a[i]
    i += 1
    j -= 1

print(" ".join(map(str, a)))

运行示例

输入:

4
1 2 3 4

输出:

4 3 2 1