Understand Program to create Pascal's Triangle Problem

Problem Name: Program to create Pascal's Triangle
Problem Description:

Constructing Pascal's Triangle

Problem Description

Pascal's Triangle is a triangular array of numbers where:

  1. The first and last elements of each row are 1.
  2. Each intermediate element is the sum of the two numbers directly above it.

Given an integer numRows, construct Pascal's Triangle as a 2D array with exactly numRows rows. Each row should only contain the elements that belong to the triangle (no trailing zeros).


Objective

To construct a 2-dimensional array that represents Pascal's Triangle.


Steps

1. Initialize the 2D Array

  • Create a 2-dimensional array pascalTriangle of size numRows x numRows initialized with 0s.

2. Declare and Initialize Variables

  • Declare a variable cols and initialize it to 0. This variable will keep track of the number of columns in the current row.

3. Construct Pascal's Triangle

  • Use a for loop to iterate through each row (variable i from 0 to numRows - 1):
    • Increment cols by 1 for each new row.
    • Use a nested for loop to iterate through each column in the current row (variable j from 0 to cols - 1):
      • If j is 0 or j is cols - 1, assign the value 1 to pascalTriangle[i][j]. This handles the edges of the triangle.
      • Otherwise, set pascalTriangle[i][j] to the sum of the two numbers directly above it in the triangle (pascalTriangle[i-1][j-1] and pascalTriangle[i-1][j]).

4. Remove Extra Zeros

  • After constructing the triangle, remove all trailing zeros from each row to ensure the triangle has the correct shape.

Example Input and Output

Example 1

Input:
numRows = 5

Output:

[
  [1],
  [1, 1],
  [1, 2, 1],
  [1, 3, 3, 1],
  [1, 4, 6, 4, 1]
]
Category:
  • Array
  • Striver's SDE sheet
Programming Language:
  • Java
Reference Link:

https://leetcode.com/problems/pascals-triangle/description/

Online IDE

Scroll down for output
Java
Output:

Loading component...

Loading component...

Tracking code (View only. In case you want to track the code, click this button):
Main Function:

Main Function is not defined.

Helper Function:

vector<vector<int>>generate(int numRows){

int cols =0;

vector<vector<int>>pascal(numRows,vector<int>(numRows,0));

for(int i = 0; i< numRows; i++){

cols++;

for(int j =0; j< cols; j++){

if(j == 0 || j == cols-1){

pascal[i][j] =1;

}

else{

pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j];

}

}

}

int rows = pascal.size();

for(int i = 0; i < rows; i++){

int colums = pascal[i].size();

for(int j = 0; j< columns; j++){

if(pascal[i][j]==0){

pascal[i].pop_back();

}

}

}

return pascal;

}//function end

Utility Functions and Global variables:

Utility Function is not required.