2 KiB
2 KiB
Leetcode Pascal's-Triangle
2022-06-12
Data structures:
#DS #array
Algorithms:
#algorithm #recursion #iteration
Difficulty:
#leetcode #coding_problem #difficulty-easy
Related topics:
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
- 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:
Examples
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
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
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;
}
};