杨辉三角
![](https://img-blog.csdnimg.cn/img_convert/674913de3e9385fb228e166e184e2fec.png)
他的规律如下:
第i行有i个元素;
第一行一个1,第二行两个1;
从第三行以后,每行的第一个和最后一个位置为1,其余位置为上一行的相邻两个元素之和
import java.util.ArrayList;
import java.util.List;
//杨辉三角
public class solution {
public List<List<Integer>> generate(int newRows){
List<List<Integer>> ans=new ArrayList<>();//双层链表,里边放着一个个单层链表
List<Integer> row=new ArrayList<>();
row.add(1);
ans.add(row);
if(newRows==1){
return ans;
}
row=new ArrayList<>();
row.add(1);
row.add(1);
ans.add(row);
if(newRows==2){
return ans;
}
for(int i=2;i<newRows;i++){
row =new ArrayList<>();
//每次创建一个新的row
row.add(1);
// ans.get(i-1),获取上一行的元素
List<Integer> lastRow=ans.get(i-1);
for(int j=1;j<i;j++){
//这里的i是第i行,i行有 i个元素 ,
// 且每一行的第一个和第 i个都是1 所以,j的取值范围是从1到 i
int a=lastRow.get(j-1);
int b=lastRow.get(j);
int c=a+b;
row.add(c);
}
row.add(1);
ans.add(row);
}
return ans;
}
public static void main(String[] args) {
solution a=new solution();
System.out.println(a.generate(5));
}
}
结果如下
![](https://img-blog.csdnimg.cn/img_convert/1d06584688b3d392a2f1c014e63a3690.png)