logseq_notes/pages/OJ notes/pages/Leetcode Pascal's-Triangle.md
2023-06-14 14:27:22 +08:00

1.4 KiB

Leetcode Pascal's-Triangle

2022-06-12


Data structures:

#DS #array

Algorithms:

#algorithm #recursion #iteration

Difficulty:

#leetcode #coding_problems #difficulty_easy

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

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