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

49 阅读1分钟

题目要求构造一个特定的数组,该数组的构建方式如下:

  • 给定一个正整数 n
  • 对于从1到n的每一个整数i,构造一个从ni的递减序列。
  • 将所有这些递减序列连接成一个大的数组。
def solution(n: int) -> list:
    result = []  
    for i in range(1, n + 1): 
        result += list(range(n, i - 1, -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])

#### 关键点解释

-   `range(n, i - 1, -1)`:这里的`range`函数用来生成一个从`n``i`(包括`i`)的逆序列表。`-1`表示步长,即每次递减1。`i-1`是因为`range`函数生成的序列不会包含结束值,所以为了包含`i`,需要设置结束值为`i-1`-   `result += list(...)`:这里使用`+=`操作符将新生成的逆序列表添加到`result`列表的末尾。`list(...)`是为了确保`range`对象被转换成列表形式。