13.构造特定数组的逆序拼接||青训营笔记创作活动

89 阅读2分钟

问题描述

小U得到了一个数字 n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个 i 从 1 到 n,将数字 n 到 i 逆序拼接,直到 i 等于 n 为止。最终,输出这个拼接后的数组。

具体步骤

  1. 初始化数组:创建一个空数组 result 用于存储最终的结果。

  2. 循环构造数组

    • 对于每个 i 从 1 到 n

      • 从 n 到 i 逆序生成一个子数组。
      • 将这个子数组追加到 result 中。
  3. 返回结果:最终返回 result 数组。

示例

  • 输入n = 3

    • 当 i = 1 时,逆序数组为 [3]
    • 当 i = 2 时,逆序数组为 [3, 2]
    • 当 i = 3 时,逆序数组为 [3, 2, 1]
    • 最终拼接后的数组为 [3, 2, 1, 3, 2, 3]
  • 输入n = 4

    • 当 i = 1 时,逆序数组为 [4]
    • 当 i = 2 时,逆序数组为 [4, 3]
    • 当 i = 3 时,逆序数组为 [4, 3, 2]
    • 当 i = 4 时,逆序数组为 [4, 3, 2, 1]
    • 最终拼接后的数组为 [4, 3, 2, 1, 4, 3, 2, 4, 3, 4]

代码:

def solution(n): result = [] for i in range(1, n + 1): # 创建一个从n到i的逆序列表 sub_array = list(range(n, i - 1, -1)) # 将这个子数组添加到结果数组中 result.extend(sub_array) return result

测试示例

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

在这个代码中,我们使用了range(n, i - 1, -1)来生成从ni(不包括i)的逆序列表。 range函数的第三个参数是步长,-1表示逆序。然后,我们使用extend方法将这个子数组添加到结 数组中,而不是使用append,因为append会将子数组作为一个整体(即一个列表元素)添加到结果数 组中,而extend会将子数组的元素逐个添加到结果数组中。