95 lines
2 KiB
Markdown
95 lines
2 KiB
Markdown
# Leetcode Pascal's-Triangle
|
|
|
|
#### 2022-06-12
|
|
|
|
---
|
|
##### Data structures:
|
|
#DS #array
|
|
##### Algorithms:
|
|
#algorithm #recursion #iteration
|
|
##### Difficulty:
|
|
#leetcode #coding_problem #difficulty-easy
|
|
##### Related topics:
|
|
```expander
|
|
tag:#recursion OR tag:#iteration OR tag:#array -tag:#Kadane_s_algorithm
|
|
```
|
|
|
|
- [[Binary Search Algorithm]]
|
|
- [[cpp_Range_based_for_loop]]
|
|
- [[Leetcode Binary-Search]]
|
|
- [[Leetcode First-Bad-Version]]
|
|
- [[Leetcode First-Unique-Character-In-a-String]]
|
|
- [[Leetcode Insert-Into-a-Binary-Search-Tree]]
|
|
- [[Leetcode Invert-Binary-Tree]]
|
|
- [[Leetcode Path-Sum]]
|
|
- [[Leetcode Ransom-Note]]
|
|
- [[Leetcode Reshape-The-Matrix]]
|
|
- [[Leetcode Reverse-Linked-List]]
|
|
- [[Leetcode Search-Insert-Position]]
|
|
- [[Leetcode Symmetric-Tree]]
|
|
- [[Leetcode Two-Sum]]
|
|
- [[Leetcode Valid-Anagram]]
|
|
- [[Two pointers approach]]
|
|
|
|
|
|
|
|
##### Links:
|
|
- [Link to problem](https://leetcode.com/problems/pascals-triangle/)
|
|
- [Additional resources]()
|
|
|
|
___
|
|
### Problem
|
|
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
|
|
**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.
|
|
> [!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
|
|
```cpp
|
|
class Solution {
|
|
public:
|
|
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];
|
|
}
|
|
answer[i][i] = 1;
|
|
}
|
|
return answer;
|
|
}
|
|
};
|
|
``` |