问题描述
小U得到了一个数字n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个i从1到n,将数字n到i逆序拼接,直到i等于n为止。最终,输出这个拼接后的数组。
例如,当n等于3时,拼接后的数组是 [3, 2, 1, 3, 2, 3]。
小U得到了一个数字n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个i从1到n,将数字n到i逆序拼接,直到i等于n为止。最终,输出这个拼接后的数组。
例如,当n等于3时,拼接后的数组是 [3, 2, 1, 3, 2, 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]`
解题思路
- 初始化结果列表:首先,你需要一个列表来存储最终的结果。
- 循环构造数组:使用一个循环从1到n,每次循环构造从n到i的逆序序列,并将其添加到结果列表中。
- 逆序构造序列:在每次循环中,你需要构造从n到i的逆序序列。
- 返回结果:最后,返回构造好的结果列表。
详细实现
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])
代码解释
- 初始化结果列表:
result = [] - 外层循环:
for i in range(1, n + 1):,从1到n进行循环。 - 内层循环:
for j in range(n, i - 1, -1):,构造从n到i的逆序序列。 - 添加到结果列表:
result.append(j),将构造的逆序序列添加到结果列表中。 - 返回结果:
return result,返回构造好的结果列表。
借鉴
如果有思路不同的友友,可以在评论区留言你的思路,一起学习一下哈哈哈哈!