递归, 还得是递归。 前面两行是固定的 (递归结束条件),从第三行开始(递归起始条件) , 求规模n (n大于3) 就是 求规模(n-1)append 当前行 (递归)。 当前行n等于前面一行 0 到 n-1 两两相加
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> result = new ArrayList<>();
if(numRows == 1) {
result.add(Arrays.asList(1));
return result;
}
if(numRows == 2) {
result.add(Arrays.asList(1));
result.add(Arrays.asList(1,1));
return result;
}
// start 3
List<List<Integer>> beforeRows = generate(numRows - 1);
List<Integer> curRow = getCurRow(beforeRows);
beforeRows.add(curRow);
return beforeRows;
}
public List<Integer> getCurRow(List<List<Integer>> beforeRows){
// 取最后一行 计算当前行
List<Integer> line = beforeRows.get(beforeRows.size() -1);
List<Integer> curRow = new ArrayList<>();
curRow.add(1);
for (int i = 0;i < line.size() - 1; i++) {
curRow.add(line.get(i) + line.get(i + 1));
}
curRow.add(1);
return curRow;
}
}