OlveraeUNSW
返回题目列表
COMP2521

数组 · 原地翻转

数组 · 原地翻转(双指针)

把一个数组原地翻转后输出——不另开一个数组,直接在原数组里把首尾元素两两交换。

做法是双指针:一个指针 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 。

样例

stdin
5
1 2 3 4 5
期望输出
5 4 3 2 1 
stdin
1
42
期望输出
42 
c-dcc
14