Python解决“特定数组的逆序拼接”问题

Python解决"特定数组的逆序拼接"问题

问题描述

小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

解决思路

这道题目综合运用了列表操作和循环控制的知识,是一道典型的数组构造问题。题目要求构造一个特定数组,该数组的构造规则是:对于每个 i 从 1 到 n,将数字 n 到 i 逆序拼接,直到 i 等于 n 为止。核心信息是逆序拼接,即每次从 n 到 i 的数字序列是逆序的。选用列表和循环的方法来解题,通过循环遍历 i 从 1 到 n,每次生成一个从 n 到 i 的逆序列表,并将其拼接到结果列表中。

解决步骤:

  1. 初始化结果列表:创建一个空列表 a,用于存储最终的结果。
  2. 循环构造逆序序列:使用 for 循环遍历 i 从 1 到 n,每次生成一个从 n 到 i 的逆序列表。
    • 使用 range(n, i - 1, -1) 生成从 n 到 i 的逆序序列。
    • 将生成的逆序序列拼接到结果列表 a 中。
  3. 返回结果列表:循环结束后,返回结果列表 a。

时间复杂度 :O(n2)。每次循环生成一个逆序序列,序列的长度从 n 到 1 递减,总共需要生成 n+(n−1)+(n−2)+...+1=2n(n+1)​ 个元素,因此时间复杂度为 O(n2)。
空间复杂度:O(n2)。结果列表 a 最终包含 2n(n+1)​ 个元素,因此空间复杂度为 O(n2)。

代码

python 复制代码
def solution(n:int)->int:
    a = []
    for i in range(1, n + 1):
        a += list(range(n, i - 1, -1))
    return a

if __name__ == '__main__':
    print(solution(n = 3) == [3, 2, 1, 3, 2, 3])
    print(solution(n = 4) == [4, 3, 2, 1, 4, 3, 2, 4, 3, 4])
    print(solution(n = 5) == [5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5])
相关推荐
李燚3 小时前
Go 项目怎么组织:DDD 4 层 vs MVC vs 脚本式
开发语言·golang·mvc·ddd·agent框架·eino
happyprince3 小时前
03_NVIDIA_ModelOpt-量化算法深入
人工智能·深度学习·算法
开飞机的舒克_3 小时前
FastAPI 实战入门:从路由、参数校验到依赖注入的后端开发指南
python·fastapi
大鱼>3 小时前
AI+货物追踪:智能快递柜追踪系统
人工智能·深度学习·算法·机器学习
霸道流氓气质3 小时前
Kiro 中反编译 JAR 包并分析字节码的流程指南
chrome·python·jar
2zcode3 小时前
免费开源项目文档:基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab
人工智能时代 准备好了吗4 小时前
AI回答内容进入率监测:引用识别、文本匹配与语义判断
开发语言·人工智能·python
LONGZETECH4 小时前
新能源汽车动力电池检测仿真教学系统:C/S 分层架构与数字化实训落地全解析
大数据·c语言·开发语言·人工智能·架构·系统架构·汽车
researcher-Jiang4 小时前
算法训练:堆 & 可并堆
算法
郝学胜-神的一滴4 小时前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal