1. 程式人生 > >leetcode 118 Pascal's Triangle(楊輝三角) python3 兩種解法(清晰的分類討論 / 優雅的拼接反向疊加)

leetcode 118 Pascal's Triangle(楊輝三角) python3 兩種解法(清晰的分類討論 / 優雅的拼接反向疊加)

class Solution:
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        # method one: 用了if 條件語句,不夠簡潔。
        # res = []
        # for i in range(numRows+1):
        #     if i == 1:
        #         row = [1]
        #         res.append(row)
# if i >= 2: # tmp = [] # for j in range(len(row)-1): # tmp.append(row[j] + row[j+1]) # row = [1] + tmp + [1] # res.append(row) # return res # method two(借鑑) res = [[1]] # 初始化[1],簡化了分類討論的步驟
for i in range(1,numRows): print(res[-1]+[0],[0]+res[-1]) res.append(list(map(lambda x, y : x + y, res[-1]+[0], [0]+res[-1]))) # list = map(func, iter) 強制型別轉換才能生成list型別的結果 # res[-1] 前一次迭代得到的列表,拼接[0]之後,反向疊加。就可以得到新的迭代序列,非常漂亮的數學結構 return
res[:numRows] # 巧妙地避免了n=0 的特殊情況