# Leetcode Pascal's-Triangle

#### 2022-06-12

---

##### Data structures:

#DS #array

##### Algorithms:

#algorithm #recursion #iteration

##### Difficulty:

#leetcode #coding_problem #difficulty-easy

##### Related topics:

##### 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;
  }
};
```
