Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

Input: rowIndex = 3
Output: [1,3,3,1]
Input: rowIndex = 0
Output: [1]
Input: rowIndex = 1
Output: [1,1]
Follow up: Could you optimize your algorithm to use only O(rowIndex) extra space?
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
row = [1]
for i in range(1, rowIndex + 1):
new_row = [1] * (i + 1)
for j in range(1, i):
new_row[j] = row[j - 1] + row[j]
row = new_row
return row
