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:
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]]
Solution:
Note: Only function is written
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> triangle = new ArrayList<>(); //created empty List of lists
if(numRows==0)
return triangle;
List<Integer> first_row = new ArrayList<>(); //created first row
first_row.add(1); // and assigned 1 to first row
triangle.add(first_row); //adding first row to our List of lists
//Looping through each row
for(int i=1;i<numRows;i++){
List<Integer> prev_row=triangle.get(i-1); //retreiving previous row from triangle
List<Integer> row = new ArrayList<>(); // creating an empty row to fill each element in this row
row.add(1); // adding 1 at first as 1 is the first element for every row
for(int j=1;j<i;j++){
row.add(prev_row.get(j-1)+prev_row.get(j)); // summing up elements in previous row and filling in the row
}
row.add(1); // adding 1 to row as last element for every row is 1
triangle.add(row); // Now adding the row to List of lists
}
return triangle;
}
}
Output:
I found that solution is very popular and helpful: https://youtu.be/XhppEP4OPHQ
ReplyDelete