118. Pascal's Triangle

Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.

In Pascal's triangle, each number is the sum of the two numbers directly above it.

Example:

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

解题要点:

层层解法,从上到下走一遍,边走边算。在算每一层时,index0的位置和最尾部的位置都直接设为1,其余的根据上一层的两个数(当前和前一位)进行计算。

class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        res = []
        for i in range(numRows):
            temp = [0] * (i+1)
            for j in range(i + 1):
                if j == 0 or j == i:
                    temp[j] = 1
                else:
                    temp[j] = res[i-1][j] + res[i-1][j-1]
            res.append(temp)
        return res

Last updated

Was this helpful?