参考资料:左程云算法课
118. Pascal’s Triangle
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]]
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ans = new ArrayList<>();
if(numRows==1)
{
ans.add(new ArrayList<>());
ans.get(0).add(1);
return ans;
}
ans.add(new ArrayList<>());
ans.get(0).add(1);
for(int i=1;i<numRows;i++)
{
ans.add(new ArrayList<>());
ans.get(i).add(1);
for(int j=1;j<i;j++)
{
ans.get(i).add(ans.get(i-1).get(j-1)+ans.get(i-1).get(j));
}
ans.get(i).add(1);
}
return ans;
}
}
左老师的写法更简洁,👇
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ans = new ArrayList<>();
for(int i=0;i<numRows;i++)
{
ans.add(new ArrayList<>());
ans.get(i).add(1);
}
for(int i=1;i<numRows;i++)
{
for(int j=1;j<i;j++)
{
ans.get(i).add(ans.get(i-1).get(j-1)+ans.get(i-1).get(j));
}
ans.get(i).add(1);
}
return ans;
}
}