构造特定数组的逆序拼接|豆包MarsCode AI刷题

71 阅读1分钟

1.题目

问题描述

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

2.思路

观察可以得出,结果数组由n个逆序子序列组成,如n=4,结果数组由[``4, 3, 2, 1`` , ``4, 3, 2`` , ``4, 3``,`` 4 ``]四部分组成,每个子序列结尾的数字递增,所以先用外循环控制子序列个数,再定义end_num,内循环将从n到end_num的数添加进结果数组,每次循环结束end_num+1

3.代码

def solution(n: int) -> list:
    # write code here
    end_num = 1
    result = []
    for _ in range(n):
        for i in range(n, end_num - 1, -1):
            result.append(i)
        end_num += 1
    return result

if __name__ == '__main__':
    print(solution(3) == [3, 2, 1, 3, 2, 3])
    print(solution(4) == [4, 3, 2, 1, 4, 3, 2, 4, 3, 4])
    print(solution(5) == [5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5])