# 118. Pascal's Triangle ###### tags: `Python`,`Leetcode` [https://leetcode.com/problems/pascals-triangle/description/](https://) ## MyCode!![](https://i.imgur.com/n0BoHAF.png) ## 解題思路 * 當只有 1 層時,只會output 1 * 每一列的**第 j 項 = 前一列的第 j-1 項 + 第 j 項** * 每一列的頭跟尾,都是 1 ,尾巴最後再**append(1) 進去就可以了** ``` 切了這個尾除了方便運算,還有一個好處: 跟前一列一樣長,可以共用 i 不用再多弄一個variable 出來 ``` ## 解法 ### Step 1 : 先創造一個只裝第一層的 2D - List * 因為題目要求 return 2D - List ### Step 2 : 如果 input = 1 ,只會輸出第一層 ### Step 3 : 如果 input > 1 ,就要開始拿前一層來計算 * 會寫一個 for 迴圈 , 因為題目要求要把 n 層的料通通 return 出來 * 先在迴圈中創好 row =[1] ,因為頭每一層都是1 * 第一個變數 i 用來描述層 ,第二個變數 j 用來描述層裡面的料 * 注意!第二個變數只會從 j = 1 開始 , j-1結束 ``` 因為 index [0] 會造成前一列的第 j-1 項 + 第 j 項 out of list j-1 是因為尾巴我留來 append(1) ``` * 再 append(剛剛算出來的料) * append(1) 上去,這一層大功告成 * 但是!完成的這一層要被貼進 2D - List (from Step 1),接下來就可以換下一層了 ### Step 4 :把更新完的 2D - List return 出來