notes/OJ notes/pages/Leetcode Pascal's-Triangle.md

87 lines
1.5 KiB
Markdown
Raw Normal View History

2022-06-14 23:33:35 +08:00
# Leetcode Pascal's-Triangle
#### 2022-06-12
---
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
##### Data structures:
2022-09-03 15:41:36 +08:00
#DS #array
2022-06-14 23:33:35 +08:00
##### Algorithms:
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
#algorithm #recursion #iteration
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
##### Difficulty:
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
#leetcode #coding_problem #difficulty-easy
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
##### Related topics:
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
##### Links:
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
- [Link to problem](https://leetcode.com/problems/pascals-triangle/)
- [Additional resources]()
2022-09-03 15:41:36 +08:00
---
2022-06-14 23:33:35 +08:00
### Problem
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
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:
![Pascal Triangle](https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif)
#### Examples
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
**Example 1:**
```markdown
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
```
**Example 2:**
```markdown
Input: numRows = 1
Output: [[1]]
```
#### Constraints
- 1 <= numRows <= 30
### Thoughts
Very simple and straightforward problem.
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
> [!summary]
> answer[i][j] = answer[i - 1][j - 1] + answer[i - 1][j]
I worked around special cases using the for loop in j: j = 1 and j < i.
### Solution
2022-09-03 15:41:36 +08:00
2022-06-14 23:33:35 +08:00
```cpp
class Solution {
public:
2022-06-28 09:31:37 +08:00
vector<vector<int>> generate(int numRows) {
vector<vector<int>> answer(numRows);
for (int i = 0; i < numRows; i++) {
// initialize sub-array
answer[i] = vector<int>(i + 1);
answer[i][0] = 1;
for (int j = 1; j < i; j++) {
answer[i][j] = answer[i - 1][j] + answer[i - 1][j - 1];
2022-06-14 23:33:35 +08:00
}
2022-06-28 09:31:37 +08:00
answer[i][i] = 1;
2022-06-14 23:33:35 +08:00
}
2022-06-28 09:31:37 +08:00
return answer;
}
2022-06-14 23:33:35 +08:00
};
2022-09-03 15:41:36 +08:00
```