仔细思考发现可以把数变成
10000
11000
12100
13310
14646
就是把数全移到一边,其实只要第一行的第一个数就可以得出全部数,
a[i][j] = a[i-1][j]+a[i-1][j-1],下面的数等于上面两个数的和,而所有列的第一个都是1。
public class Solution {
public List<List<Integer>> generate(int numRows) {
int[][] a=new int[numRows][numRows];
List<Integer> list = new ArrayList<Integer>();
List<List<Integer>>llist = new ArrayList<List<Integer>>();
if(numRows<=0){
return llist;
}
a[0][0] = 1;
for(int i=0;i<numRows;i++){
for(int j=0;j<=i;j++){
if(j==0){
a[i][j]=1;
list.add(a[i][j]);
continue;
}
a[i][j] = a[i-1][j] + a[i-1][j-1];
if(a[i][j]!=0){
list.add(a[i][j]);
}
}
llist.add(list);
list = new ArrayList<Integer>();
}
return llist;
}
}