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]
]

 

Python

 
class Solution(object):
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        rows_list = []
        for i in range(1, numRows+1):
            rows_list.append(self.return_row(i))
        return rows_list


    def return_row(self, row_num):
        row_list = []
        for i in range(1, row_num+1):
            row_list.append(self.return_result(i,row_num))
        return row_list



    def return_result(self, a, row_num):
        return self.factorial(row_num-1)/(self.factorial(a-1)*self.factorial(row_num-a))

    def factorial(self, n):
        return reduce(lambda x, y: x * y, [1] + range(1, n + 1))

发表评论