杨辉三角

题目描述:

 

 

 思路:

首先梳理一下杨辉三角的特点:

1.我们要用一个二维数组去存储杨辉三角,如:{{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}}

2.杨辉三角的第一个元素,最后一个元素都是1

3.杨辉三角的第n行有n个元素

4.除去第一行,杨辉三角的元素等于它正上方的元素与正上方前面一个元素的和。

 

根据上面的特点,我们应该先逐个生成二维数组内的元素,再将元素添加到最外层的二维数组中。

我们先创建一个方法,利用上次生成的数组(元素)去生成本次的数组(元素),那么这个方法就需要两个参数,一个是上次的数组(元素),一个是本次是第几行的数组(元素),最后还需要返回这个结果:public static ArrayList<Integer> getRows(List<Integer> list,int n);

然后需要创建一个方法,将生成的数组(元素)添加到外层数组中,并返回结果:public static List<List<Integer>> generate(int numRows);

class Solution {
    public List<List<Integer>> generate(int numRows) {
     List
<List<Integer>> listOut = new ArrayList<>(); List<Integer> listIn = new ArrayList<>(); //创建一个临时列表存储上次的结果集合 List<Integer> temp = listIn; for(int i = 1;i<=numRows;i++){ temp = getRows(temp,i); listOut.add(temp); } return listOut; } //通过上次的结果集合得到当前行的结果 public static ArrayList<Integer> getRows(List<Integer> list,int n){ //创建一个数组来存储当前结果集合 ArrayList<Integer> integers = new ArrayList<>(); for(int i = 0;i<n;i++){ if(i==0||i==n-1){ integers.add(1); }else{ integers.add(list.get(i-1)+list.get(i)); } } return integers; } }

 

posted @ 2023-02-27 21:00  园友1912508  阅读(80)  评论(0)    收藏  举报