iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0

題目說明:給一個整數n要你求出前n列的帕斯卡三角形。帕斯卡三角如下:

Case 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

Case 2:
Input: numRows = 1
Output: [[1]]

解題思路:相信大家從小學數學都背過帕斯卡三角形,那用程式該如何表示呢?如果以numRows=5來看,三角形會長這樣。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
我們可以發現以下規則:

  1. 每列的第0個和最後一個數字都是1(從第一列開始)
  2. 第i列有i+1個數字(0<=i<=n-1)
  3. 第i列第j行的數字=第i-1列第j-1行數字+第i-1列第j行(i,j>0)

找到規則後程式就很好寫了

附上程式碼以及註解
Python

class Solution:
    def generate(self, n: int) -> List[List[int]]:
        pascalList=[]#建立list儲存結果
        for i in range(n):
            pascalList.append([])
            pascalList[i].append(1)#每一列的開頭數字都是1
            for j in range(1,i):
                pascalList[i].append(pascalList[i-1][j-1]+pascalList[i-1][j])
            if(n!=0):
                pascalList[i].append(1)#每一列的結尾數字都是1
        pascalList[0]=[1]
        return pascalList

上一篇
Day 27 Path Sum
下一篇
Day 29 Find First and Last Position of Element in Sorted Array
系列文
從leetcode學習資料結構和演算法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言