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

98 阅读3分钟

问题描述

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

完整代码

def solution(n: int) -> list:
    # 初始化结果数组
    result = []
    # 遍历从1到n的每个数字
    for i in range(1, n + 1):
        # 逆序拼接数字n到i,并添加到结果数组中
        for j in range(n, i - 1, -1):
            result.append(j)
    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])

通过分析和编写上述代码,我学习到了几个重要的编程概念和技巧:

  1. 循环结构的应用:在这个问题中,我们使用了两层嵌套循环来构建数组。外层循环负责遍历从1到n的每个数字i,而内层循环则负责逆序拼接数字n到i。这种结构让我更加熟悉了如何在实际问题中应用循环,以及如何控制循环的起始和结束条件。

  2. 数组操作:在Python中,数组(列表)是一种非常灵活的数据结构。通过append()方法,我们可以轻松地将元素添加到列表的末尾。这个操作在构建数组时非常常用,它让我更加熟悉了如何在循环中动态地构建数组。

  3. 逆序遍历:在内层循环中,我们使用了range(n, i - 1, -1)来实现从n到i的逆序遍历。这个技巧让我学会了如何控制循环的步长,以及如何实现逆序遍历。

  4. 函数定义和测试:通过定义solution函数并使用if __name__ == '__main__':块来测试函数的正确性,我学习到了如何编写可重用和可测试的代码。这种结构不仅有助于代码的模块化,也方便了后续的维护和扩展。

  5. 代码的可读性:在编写代码时,我注意到了代码的可读性。通过合理的变量命名和注释,我努力使代码易于理解。这对于团队协作和代码的长期维护非常重要。

  6. 问题解决思维:这个问题锻炼了我的逻辑思维和问题解决能力。我学会了如何将一个复杂的问题分解成小的、可管理的部分,然后逐一解决。

  7. 测试的重要性:通过编写测试样例,我意识到了测试在软件开发中的重要性。它不仅可以帮助我们验证代码的正确性,还可以在未来的代码修改中防止回归错误。

总的来说,这个练习不仅提高了我的编程技能,也加深了我对编程概念的理解。通过实际编码和测试,我更加明白了理论与实践的结合,这对于我成为一名更好的程序员是非常有帮助的。