---
# System prepended metadata

title: 118. Pascal's Triangle
tags: [Leetcode, Python]

---

# 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 出來
