给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
通过观察我们可以看出他第i列的第一个和第i个都是1,其他都是肩膀上俩数相加
我们怎么区分每一行呢,每到新的一行就new一个新的数组,然后存入二维数组里,最后下一行调用有取出上一行的数组来用
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> biglist = new ArrayList<List<Integer>>();
for(int i=0;i<numRows;i++){//行数
List list =new ArrayList<Integer>();
//当前行的数组叫list,每次都会new一个新的进行填充
for(int j=0;j<=i;j++){//j列
if(j==0||j==i){//填充1
list.add(1);
}else{
List<Integer> up=biglist.get(i-1);//up是上一行的结果
list.add(up.get(j-1)+up.get(j));//肩上数据相加
}
}
biglist.add(list);
}
return biglist;
}
}
118.给定一个非负索引 rowIndex
,返回「杨辉三角」的第 rowIndex
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
就是在上一题的基础上提取要的那个数组元素
class Solution {
public List<Integer> getRow(int rowIndex) {
List<List<Integer>> biglist=new ArrayList<>();
for(int i=0;i<=rowIndex;i++){
List list=new ArrayList<Integer>();
List<Integer> up=new ArrayList<Integer>();
if(i>0) up=biglist.get(i-1);
for(int j=0;j<=i;j++){
if(j==0||j==i){
list.add(1);
}else{
list.add(up.get(j-1) + up.get(j));
}
}
biglist.add(list);
}return biglist.get(rowIndex);
}
}