The challenge

Given an integer numRows, return the first numRows of Pascal’s triangle.

In Pascal’s triangle, each number is the sum of the two numbers directly above it as shown:

Example 1:

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

Example 2:

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

Constraints:

  • 1 <= numRows <= 30

The solution in Python code

1
2
3
4
5
6
7
8
9
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        triangle = [[1]]
        
        for j in range(1, numRows):
            prev = triangle[-1]
            triangle.append([1] + [prev[i]+prev[i+1] for i in range(len(prev)-1)] + [1])
            
        return triangle