题目
从标准输入读入 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