数组 · 原地翻转(双指针)
把一个数组原地翻转后输出——不另开一个数组,直接在原数组里把首尾元素两两交换。
做法是双指针:一个指针 i 从头(下标 0)往右走,一个指针 j 从尾(下标 n-1)往左走,每次交换 a[i] 与 a[j],然后 i++、j--,直到两指针相遇。
请补全 reverse。
易错点:① 循环条件是
i < j,不是i <= j——写成<=时,当n为奇数会让正中间那个元素和自己交换(无害但多余),更糟的是有人顺手写成i <= n直接越界。② 别两个方向都用同一个变量;忘了j--会死循环。③n为 0 或 1 时本就无需交换,循环条件i < j天然成立地跳过。
输入
- 第 1 行:整数
n(可能为0)。 - 第 2 行:
n个整数。
输出
- 一行:翻转后的数组,每个值后跟一个空格。
示例:输入 5 / 1 2 3 4 5 → 输出 5 4 3 2 1 。