思路:
特点:第i行有i个数,i从1开始;第i行第一个和最后一个数是1,其余的数由上一行计算出的结果算出。
所以用两层循环,第一层循环表示第i行,从1开始。
第二层循环更表示第i行的第几个数,从1开始,最大是i。
在计算每一行的时候如果是0或者i,即是第一个数或者是最后一个数,结果是1.
否则由上一行的同一列和上一列相加得出。
总结:
杨辉三角的特点:第i行有i个数,i从1开始;第i行第一个和最后一个数是1,其余的数由上一行计算出的结果算出。
代码:
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ans = new ArrayList<>();
// 第 i 行有 i 个数
for(int i = 1; i <= numRows; i++) {
List<Integer> temp = new ArrayList<>();
for(int j = 1; j <= i; j++) {
// 第一个和最后一个数是1
if(j == 1 || j == i) temp.add(1);
else {
// 其余的与上一行算出的结果有关
List<Integer> last = ans.get(ans.size() - 1);
temp.add(last.get(j - 1) + last.get(j - 2));
}
}
ans.add(temp);
}
return ans;
}
}
参考: