notes/OJ notes/pages/Leetcode Pascal's-Triangle.md
2022-07-10 08:29:59 +08:00

2 KiB

Leetcode Pascal's-Triangle

2022-06-12


Data structures:

#DS #array

Algorithms:

#algorithm #recursion #iteration

Difficulty:

#leetcode #coding_problem #difficulty-easy

tag:#recursion OR tag:#iteration OR tag:#array -tag:#Kadane_s_algorithm 

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