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