今天的分享是杨辉三角
解题思路
拿到这个题,首先不要被他的图形给迷惑了,总的来说,他就是一个二维数组
搞清楚这一点后,我们的思路就很清晰了,看到他每一行的第一个都是1,还有每一行的最后一个也是1,这里我们就可以单独加进去;我们先定义这个二维数组:List<List> ret = new ArrayList<>();
中间的数怎么加,我们要理解这样一个式子
他每个中间的那些数字都是他的上一行的前一列加本列的数字得到的,这里我们写个循环就可以得到所有的了。
代码实现
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<>();
List<Integer> list1 = new ArrayList<>();
list1.add(1);
ret.add(list1);//第一位为1,先给加上放进里面
for(int i = 1;i < numRows;i++){
List<Integer> list = new ArrayList<>(); //定义每一行的
list.add(1); //每次第一个都先放上1
List<Integer> preRow = ret.get(i - 1); //这是第i行的上一行的内容
for(int j = 1;j < i;j++){
int nums = preRow.get(j) + preRow.get(j - 1); //中间的数
list.add(nums); //放进中间的数
}
list.add(1); //每次末尾加一
ret.add(list); //放进二维数组里完成
}
return ret;
}