118.杨辉三角
public List<List<Integer>> generate(int numRows) {
if (numRows == 0) return new ArrayList<>();
List<List<Integer>> list = new ArrayList<>();
//特殊处理一下第一行
List<Integer> tmp = new ArrayList<>();
tmp.add(1);
list.add(tmp);
//处理剩下几行
for(int i = 2; i <= numRows;i++){
tmp = new ArrayList<Integer>();
tmp.add(1);
for(int j = 1;j < i-1;j++){
tmp.add(list.get(i-2).get(j)+list.get(i-2).get(j-1));
}
tmp.add(1);
list.add(tmp);
}
return list;
}
119.杨辉三角Ⅱ
代码
public List<Integer> getRow(int rowIndex) {
//数学问题,C(n,k)=n!/(k!*(n-k)!)
//后一项是前一项的(n-k)/(k+1)倍
List<Integer> list = new ArrayList<>(rowIndex+1);
long tmp = 1;
for(int k = 0;k <= rowIndex;k++){
list.add((int)tmp);
tmp = tmp * (rowIndex-k)/(k+1);
}
return list;
}