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

131 阅读2分钟

问题描述

小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. 初始化结果列表:首先,你需要一个列表来存储最终的结果。
  2. 循环构造数组:使用一个循环从1到n,每次循环构造从n到i的逆序序列,并将其添加到结果列表中。
  3. 逆序构造序列:在每次循环中,你需要构造从n到i的逆序序列。
  4. 返回结果:最后,返回构造好的结果列表。

详细实现

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

代码解释

  1. 初始化结果列表result = []
  2. 外层循环for i in range(1, n + 1):,从1到n进行循环。
  3. 内层循环for j in range(n, i - 1, -1):,构造从n到i的逆序序列。
  4. 添加到结果列表result.append(j),将构造的逆序序列添加到结果列表中。
  5. 返回结果return result,返回构造好的结果列表。

借鉴

如果有思路不同的友友,可以在评论区留言你的思路,一起学习一下哈哈哈哈!