1.题目
问题描述
小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]
2.思路
观察可以得出,结果数组由n个逆序子序列组成,如n=4,结果数组由[``4, 3, 2, 1`` , ``4, 3, 2`` , ``4, 3``,`` 4 ``]四部分组成,每个子序列结尾的数字递增,所以先用外循环控制子序列个数,再定义end_num,内循环将从n到end_num的数添加进结果数组,每次循环结束end_num+1
3.代码
def solution(n: int) -> list:
# write code here
end_num = 1
result = []
for _ in range(n):
for i in range(n, end_num - 1, -1):
result.append(i)
end_num += 1
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])