118. Pascal's Triangle
DifficultyEasy
Description
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
Solutions
Solution 1: Simulation
Thinking
Row \(i\) is formed by adding adjacent entries of row \(i-1\), with \(1\)s on both ends. \(\textit{numRows}\le 30\), so building row by row is enough. Each row depends only on the previous one.
We first create an answer array \(f\), then set the first row of \(f\) to \([1]\). Next, starting from the second row, the first and last elements of each row are \(1\), and for other elements \(f[i][j] = f[i - 1][j - 1] + f[i - 1][j]\).
The time complexity is \(O(n^2)\), where \(n\) is the given number of rows. Ignoring the space consumption of the answer, the space complexity is \(O(1)\).
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
