top1编程
← 返回题目
题解

数组逆序重存放

1 条题解

  • 0
    @ 2026-8-5 0:54:41

    解题思路

    先把读到的 n 个数按原来的顺序存进数组 a,下标从 0 开始。

    要得到逆序的结果,其实不用真的把数组里的数搬来搬去,只要“倒着输出”就行了:

    • 从最后一个下标 n-1 开始,一直输出到下标 0;
    • 数之间用一个空格隔开。

    输出格式上要注意:除了第一个输出的数前面没有空格,其他的数前面都要有一个空格。我们用 if (i != n-1) 判断一下,让最后一个输出的数后面不会多出空格。

    参考代码

    // P4442 数组逆序重存放:把数组里的数倒着输出
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;               // 数组里数的个数
        int a[105];
        for (int i = 0; i < n; i++) cin >> a[i];  // 读入 n 个数
        // 从最后一个数开始,往前一个个输出
        for (int i = n - 1; i >= 0; i--) {
            if (i != n - 1) cout << " ";  // 数之间用空格隔开
            cout << a[i];
        }
        cout << endl;
        return 0;
    }
    

    复杂度分析

    设有 n 个数。

    • 时间:读入 n 个数、输出 n 个数,各是一遍循环,时间复杂度是 O(n)。
    • 空间:需要一个能装 n 个数的数组,空间复杂度是 O(n)。
    • 1