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

37 阅读3分钟

问题描述

题目要求构造一个特定数组,该数组的构造规则是:对于每个 i 从 1 到 n,将数字 n 到 i 逆序拼接,直到 i 等于 n 为止。最终,输出这个拼接后的数组。

示例分析

通过给出的测试样例,我们可以更好地理解题目的要求:

  • 样例1:

    • 输入:n = 3

    • 输出:[3, 2, 1, 3, 2, 3]

    • 解释:

      • 当 i = 1 时,逆序拼接 3 到 1,得到 [3, 2, 1]
      • 当 i = 2 时,逆序拼接 3 到 2,得到 [3, 2]
      • 当 i = 3 时,逆序拼接 3 到 3,得到 [3]
      • 最终拼接结果为 [3, 2, 1, 3, 2, 3]
  • 样例2:

    • 输入:n = 4

    • 输出:[4, 3, 2, 1, 4, 3, 2, 4, 3, 4]

    • 解释:

      • 当 i = 1 时,逆序拼接 4 到 1,得到 [4, 3, 2, 1]
      • 当 i = 2 时,逆序拼接 4 到 2,得到 [4, 3, 2]
      • 当 i = 3 时,逆序拼接 4 到 3,得到 [4, 3]
      • 当 i = 4 时,逆序拼接 4 到 4,得到 [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 时,逆序拼接 5 到 1,得到 [5, 4, 3, 2, 1]
      • 当 i = 2 时,逆序拼接 5 到 2,得到 [5, 4, 3, 2]
      • 当 i = 3 时,逆序拼接 5 到 3,得到 [5, 4, 3]
      • 当 i = 4 时,逆序拼接 5 到 4,得到 [5, 4]
      • 当 i = 5 时,逆序拼接 5 到 5,得到 [5]
      • 最终拼接结果为 [5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5]

解题思路

  1. 理解题目要求

    • 题目要求构造一个数组,数组的每个元素是根据 n 到 i 的逆序拼接生成的。
    • 需要从 i = 1 到 i = n 逐步构造数组。
  2. 数据结构选择

    • 使用一个列表(list)来存储最终的结果。
  3. 算法步骤

    • 初始化一个空列表 result

    • 使用两层循环:

      • 外层循环从 1 到 n,表示当前的 i
      • 内层循环从 n 到 i,逆序拼接数字并添加到 result 中。
    • 最终返回 result 列表。

代码实现

python

def solution(n: int) -> list:

    result = []

    

    # 构造数组

    for i in range(1, n + 1):

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

代码解释

  • 函数定义solution(n: int) -> list,接受一个整数 n 作为输入,返回一个列表。
  • 初始化结果列表result = []
  • 外层循环for i in range(1, n + 1),遍历从 1 到 n
  • 内层循环for j in range(n, i - 1, -1),逆序遍历从 n 到 i,并将每个数字添加到 result 中。
  • 返回结果return result

测试与验证

  • 通过 if __name__ == '__main__': 部分,可以测试函数是否正确生成预期的数组。
  • 使用 print 语句输出结果,并与预期结果进行比较。

总结

这道题目主要考察了对循环和列表操作的理解。通过两层循环,可以逐步构造出符合题目要求的数组。理解题目的构造规则,并将其转化为代码实现,是解决这个问题的关键。


希望这个总结对你理解题目和解题思路有所帮助!