13. 构造特定数组的逆序拼接

目录
文章目录隐藏
  1. 问题描述
  2. 测试样例
  3. 解题思路
  4. 最优 JavaScript 代码实现
  5. 代码说明

刷题前请喊一遍我们的口号:

  • 方法不对,刷题白费。
  • 节省时间,精准刷题。

本题难度系数:⭐ 简单

问题描述

小 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]


解题思路

  1. 问题理解
    • 我们需要构造一个数组,对于每个 i 从 1 到 n,将数字从 n 到 i 逆序拼接。
    • 例如,n = 3 时:
      • i = 1:拼接 [3, 2, 1]
      • i = 2:拼接 [3, 2]
      • i = 3:拼接 [3]
      • 最终数组是 [3, 2, 1, 3, 2, 3]
  2. 数据结构选择
    • 使用一个数组 result 来存储最终的结果。
  3. 算法步骤
    • 外层循环:i 从 1 到 n
    • 内层循环:j 从 n 到 i,每次递减 1,将 j 加入 result

最优 JavaScript 代码实现

function solution(n) {
    const result = [];
    for (let i = 1; i <= n; i++) { for (let j = n; j >= i; j--) {
            result.push(j);
        }
    }
    return result;
}

function main() {
    console.log(JSON.stringify(solution(3)) === JSON.stringify([3, 2, 1, 3, 2, 3]));
    console.log(JSON.stringify(solution(4)) === JSON.stringify([4, 3, 2, 1, 4, 3, 2, 4, 3, 4]));
    console.log(JSON.stringify(solution(5)) === JSON.stringify([5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5]));
}

main();

代码说明

  • 外层循环i 从 1 到 n,控制每次拼接的起始点。
  • 内层循环j 从 n 到 i,逆序将数字加入 result 数组。
  • 时间复杂度:O(n²),因为嵌套循环的总次数是 n + (n-1) + ... + 1 = n(n+1)/2
  • 空间复杂度:O(n²),因为结果数组的长度是 n(n+1)/2

这个实现是最直接和高效的方式,符合题目要求。

以上关于13. 构造特定数组的逆序拼接的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 13. 构造特定数组的逆序拼接

发表回复