1. 程式人生 > 其它 >python楊輝三角_LeetCode刷題——第二十八天(楊輝三角)

python楊輝三角_LeetCode刷題——第二十八天(楊輝三角)

技術標籤:python楊輝三角楊輝三角python程式碼

昨晚上的大暴雨真是很刺激呀!狂風暴雨,電閃雷鳴,因為是半夜起來關窗戶的時候看到的,所以腦子裡也沒有留下很多畫面,只記得關完窗戶後,躺在床上,感覺外邊的世界要崩塌了一樣。想想有多少流浪的人在這樣的天氣,只能蜷縮在城市的某個角落裡等待天晴,就略有心酸,可能是我最近看抖音上那些關愛孤寡老人的視訊看多了,就總往這方面想——楊輝三角

第二十八天——第二十八題(楊輝三角

看題目!

給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。

98ba6d7ee9a0d8c0a4c6aade0f722392.gif

在楊輝三角中,每個數是它左上方和右上方的數的和

示例:

輸入: 5
輸出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

python 解答之一:

class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        triangle = []
        for row_num in range(numRows):
            row = [None for i in range(row_num+1)]
            row[0], row[-1] = 1, 1
            for j in range(1, len(row)-1):
                row[j] = triangle[row_num-1][j-1] + triangle[row_num-1][j]
            triangle.append(row)
        return triangle

程式碼解釋:

1.通過觀察楊輝三角的數字規律可以確定一些位置的值,每一行的首位和末尾都是1。

2.首先定義一個目標陣列(最後返回的結果),之前也做過一個將臨時陣列新增到目標陣列的題目(可以看一下第二十三天的內容)。

3.開始迴圈,在迴圈中定義了一個數組row,這個row在第一次for迴圈時,row=[None],然後row[0]=1改變了row=[None],進入第二個for迴圈,這個j代表的索引就是row陣列中非1的那些位置(除首末以外的中間位置)。

4.這個時候找到當前行的前一行陣列再找到該陣列j索引的前一個索引上的值(也就是每個數的左上方的值),同理找到這個元素右上方的值,兩個值之和賦值給row的j索引,主要操作就完成了。

5.row放入triangle中,進行下一次迴圈操作,迴圈完畢後,返回triangle陣列,就可以得到楊輝三角啦。

6.對於這句的理解:row = [None for i in range(row_num+1)],就是直接把row上所有的位置都變成None,然後在下一句:row[0], row[-1] = 1, 1將首末位變成已知的值1。之後在下邊的操作計算中間的值。

小生不才,自帶囉嗦體質,望各位見諒~

讀完一遍發現我解釋了那麼多,好像第6步解釋就可以說明問題了哈哈~