题目:
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
代码:
public List<List<Integer>> generate(int numRows) {
if(numRows <= 0){
return new ArrayList<>();
}
//result用来表示最终结果,这个result中就包含了若干行
List<List<Integer>> result = new ArrayList<>();
//处理第一行,就是固定的一个1
List<Integer> firstLine = new ArrayList<>();
firstLine.add(1);
result.add(firstLine);
if(numRows == 1){
return result;
}
//处理第二行
List<Integer> secondLine = new ArrayList<>();
secondLine.add(1);
secondLine.add(1);
result.add(secondLine);
if(numRows == 2){
return result;
}
for(int row = 3; row <= numRows;row++){
List<Integer> prevLine = result.get(row-1 - 1);
List<Integer> currentLine = new ArrayList<>();
currentLine.add(1);//第一列
for(int j = 2;j <= row - 1;j++){
int num1 = prevLine.get(j - 1);
int num2 = prevLine.get(j - 1 - 1);
currentLine.add(num1 + num2);
}
currentLine.add(1);//最后一列
result.add(currentLine);
}
return result;
}