For example, given numRows = 5,
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
用到了List,并且用了List的元素是List的写法
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> outter=new ArrayList<List<Integer>>(); //外层List的定义
if(numRows==0) return outter; //numRows的时候输出空
for(int n=0;n<numRows;++n){ //这种计数法是n从0开始的
List<Integer> inner=new ArrayList<Integer>(); //每行内层List
inner.add(1); //先加入最开始的1
for(int i=1;i<n;++i){ //注意这儿是i<n,内层List的长度,跟该层层数有相等或少1的关系(看是从0还是1计数)
List<Integer> inner_pre=outter.get(n-1); //该层的元素由上层得到,注意List的这种赋值定义法
inner.add(inner_pre.get(i-1)+inner_pre.get(i));
}
if(n>0) inner.add(1); //加上最后边的1
outter.add(inner); //把每行内层List加入外层List
}
return outter;
}
}
下边的写法跟上边完全一样。不同仅仅在于为了保证与提供的行号一致,n是从1开始而不是0
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> outter=new ArrayList<List<Integer>>(); //外层List的定义
if(numRows==0) return outter;
for(int n=1;n<=numRows;++n){ //为了跟numRows达成统一,n从1开始计数
List<Integer> inner=new ArrayList<Integer>();
inner.add(1);
for(int i=1;i<n-1;++i){ //不同
List<Integer> inner_pre=outter.get(n-2); //不同
inner.add(inner_pre.get(i-1)+inner_pre.get(i));
}
if(n>1) inner.add(1);
outter.add(inner);
}
return outter;
}
}