特定数组的逆序拼接 问题描述 小U得到了一个数字n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个i从1到n,将数字n到i逆序拼接,直到i等于n为止。最终,输出这个拼接后的数组。
例如,当n等于3时,拼接后的数组是 [3, 2, 1, 3, 2, 3]。
测试样例 样例1:
输入:n = 3 输出:[3, 2, 1, 3, 2, 3]
样例2:
输入:n = 4 输出:[4, 3, 2, 1, 4, 3, 2, 4, 3, 4]
样例3:
输入:n = 5 输出:[5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5]
思路解析 理解题意:
给定一个正整数 n,我们需要构造一个数组。
对于每一个 i 从 1 到 n,我们需要将 n 到 i 的数字逆序拼接到结果数组中。
例如,对于 n = 3,我们从 i = 1 到 i = 3 进行拼接:
当 i = 1:拼接 3, 2, 1 → [3, 2, 1] 当 i = 2:拼接 3, 2 → [3, 2] 当 i = 3:拼接 3 → [3] 最终的结果是将这些部分合并在一起。
结构分析:
结果数组的结构是由不同的拼接部分构成的。 每次循环 i,我们会从 n 逆序到 i,将这些值添加到结果数组中。 图解 对于 n = 4:
i = 1:拼接 [4, 3, 2, 1] i = 2:拼接 [4, 3, 2] i = 3:拼接 [4, 3] i = 4:拼接 [4] 最终数组将是:[4, 3, 2, 1, 4, 3, 2, 4, 3, 4]
代码详解
代码工作流程 数据结构:
使用 List 来动态存储结果,方便后续操作。 双重循环:
外层循环遍历 i 从 1 到 n。 内层循环从 n 逆序到 i,将每个值添加到结果列表中。 数组转换:
将 List 转换为 int[] 数组以符合返回值要求。 测试用例:
通过 Arrays.equals 方法检查输出与预期结果是否一致。 复杂度分析 时间复杂度:O(n^2),因为对于每个 i,需要从 n 到 i 进行拼接操作。 空间复杂度:O(n^2), 心得:由于我们存储了所有拼接的结果在列表中写代码是一种创造性的表达,它要求逻辑清晰和细节关注。在编程过程中,我学到了耐心和解决问题的重要性。代码不仅要写得出,更要写得好,这意味着代码要简洁、高效且易于他人理解。调试是编程不可或缺的一部分,它教会了我如何面对失败并从中学习。最重要的是,代码是团队合作的产物,良好的沟通和协作能力对于项目的成功至关重要。