问题描述
小U得到了一个数字 n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个 i 从 1 到 n,将数字 n 到 i 逆序拼接,直到 i 等于 n 为止。最终,输出这个拼接后的数组。
具体步骤
-
初始化数组:创建一个空数组
result用于存储最终的结果。 -
循环构造数组:
-
对于每个
i从1到n:- 从
n到i逆序生成一个子数组。 - 将这个子数组追加到
result中。
- 从
-
-
返回结果:最终返回
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)来生成从n到i(不包括i)的逆序列表。
range函数的第三个参数是步长,-1表示逆序。然后,我们使用extend方法将这个子数组添加到结
数组中,而不是使用append,因为append会将子数组作为一个整体(即一个列表元素)添加到结果数
组中,而extend会将子数组的元素逐个添加到结果数组中。