1.題目描述:
給定一個非負整數(shù)?numRows,生成「楊輝三角」的前?numRows?行。
在「楊輝三角」中,每個數(shù)是它左上方和右上方的數(shù)的和。
示例 1:
輸入: numRows = 5
輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例?2:
輸入: numRows = 1
輸出: [[1]]
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/pascals-triangle
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2.題解:
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
result = [] #用來存放楊輝三角
#
for i in range(numRows):
now = [1]*(i+1)
if i >= 2:
for j in range(1,i):
now[j] = pre[j-1] + pre[j]
result.append(now)
pre = now
return result
?
3.題目總結(jié):
這段代碼是用來生成楊輝三角的,楊輝三角是一個很有趣的數(shù)學圖形,它的每一行都是由數(shù)字 1 開始和結(jié)束,中間的數(shù)字是上一行相鄰兩個數(shù)字之和。下面是一個 5 行的楊輝三角:
```
? ? ? ? 1
? ? ? ?1 1
? ? ? 1 2 1
? ? ?1 3 3 1
? ? 1 4 6 4 1
```
現(xiàn)在我們來解釋一下這段代碼:
首先定義了一個函數(shù) `generate`,它接收一個參數(shù) `numRows`,表示要生成楊輝三角的行數(shù)。
然后定義了一個空列表 `result`,用來存儲生成的楊輝三角。
接下來使用一個循環(huán),循環(huán)次數(shù)為 `numRows`,也就是要生成的楊輝三角的行數(shù)。
在每次循環(huán)中,首先創(chuàng)建一個長度為 `i+1` 的列表 `now`,并將其初始化為 1,這個列表就是當前行的數(shù)字列表。
然后判斷當前行的行數(shù)是否大于等于 2,如果是,就需要計算中間的數(shù)字。這里使用了另一個循環(huán),循環(huán)次數(shù)為 `i-1`,也就是中間數(shù)字的個數(shù)。在循環(huán)中,將 `now` 列表中第 `j` 個數(shù)字更新為上一行相鄰兩個數(shù)字之和。
接下來將當前行的數(shù)字列表 `now` 添加到 `result` 列表中。
最后將當前行的數(shù)字列表 `now` 賦值給變量 `pre`,以便下一次循環(huán)使用。文章來源:http://www.zghlxwxcb.cn/news/detail-479321.html
最后返回 `result` 列表,即為生成的楊輝三角。文章來源地址http://www.zghlxwxcb.cn/news/detail-479321.html
到了這里,關(guān)于***楊輝三角_yyds_LeetCode_python***的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!