diff --git a/OJ notes/pages/Leetcode Pascal's-Triangle-II.md b/OJ notes/pages/Leetcode Pascal's-Triangle-II.md new file mode 100644 index 0000000..cbe3fb7 --- /dev/null +++ b/OJ notes/pages/Leetcode Pascal's-Triangle-II.md @@ -0,0 +1,83 @@ +# Leetcode Pascal's-Triangle-II + +2022-09-02 14:54 + +> ##### Algorithms: +> #algorithm #recursion +> ##### Data structures: +> #DS #array +> ##### Difficulty: +> #coding_problem #difficulty-easy +> ##### Additional tags: +> #leetcode +> ##### Revisions: +> N/A + +##### Links: +- [Link to problem](https://leetcode.com/problems/pascals-triangle-ii/) +___ +### Problem + +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: + +![](https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif) + +#### Examples + +**Example 1:** + +**Input:** rowIndex = 3 +**Output:** [1,3,3,1] + +**Example 2:** + +**Input:** rowIndex = 0 +**Output:** [1] + +**Example 3:** + +**Input:** rowIndex = 1 +**Output:** [1,1] + +#### Constraints + +- `0 <= rowIndex <= 33` + +### Thoughts + +> [!summary] +> This is a #recursion problem. + +Because to get the nth row, we have to get the `n - 1` th +row, we use recursion. + +### Solution + +```cpp +class Solution { +public: + vector getRow(int rowIndex) { + // recursion + + if (rowIndex == 0) { + return {1}; + } + + auto last = getRow(rowIndex - 1); + + vector ans; + + ans.push_back(1); + + for (int i = 1; i < rowIndex; i++) { + ans.push_back(last[i] + last[i - 1]); + } + + ans.push_back(1); + + return ans; + } +}; +``` \ No newline at end of file