算法升级之路(五)

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

算法升级之路(五)_第1张图片
示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]

解题思路:这个解题思路很简单,就按照杨辉三角的生成逻辑来相加即可。

从i=0开始循环相加到给定的值numRows,i的值与当前集合的长度相关,j=0开始循环相加到当前的i,当j=0或者j=i时,当前下标的集合元素为0,否则,当前元素等于,上个集合的相同下标和与上个下标元素之和

 public List<List<Integer>> generate(int numRows) {
        List <List<Integer>> yangHuiList = new ArrayList <List<Integer>>();
        for(int i =0;i<numRows;++i){
          	List<Integer>  rowList =new ArrayList <Integer>();
           for(int j=0;j<=i;++j){
               if(j==0||j==i){
                   rowList.add(1);
               }else{
                   rowList.add(yangHuiList.get(i-1).get(j)+yangHuiList.get(i-1).get(j-1));
               }
           }
           yangHuiList.add(rowList);

        }
     
return yangHuiList;

    }

你可能感兴趣的:(算法刷题,算法,java,数据结构)