Leedcode #118 杨辉三角

答案:

class Solution {

    public List> generate(int numRows) {
        List list = new ArrayList();
        List> list1 = new ArrayList>();
        if(numRows <= 0) {//防止 numRows<= 0 出现 list1=null 的情况
            return list1;
        }
        
        for(int i = 0;i < numRows; i++) {
            List list2 = new ArrayList();//循环外层声明内层的集合,内层的集合用来存取整数
            for(int n = 0;n <= i; n++){
                if(n == 0||n == i) {//每个内层的集合开始与结束时都是1
                    list2.add(1);
                } else {//每个在集合内部的值,只要不是开始或结束的位置,都是其上一集合同位置与其前一个的和
                    List temp = list1.get(i-1);
                    list2.add(temp.get(n-1)+temp.get(n));
                }
            }
            list1.add(list2);
        }
        
        return list1;
    }

}

此次参考了点击打开链接

思路:在看到图示时,本以为会是数组存整数,然后加入list集合。但在看到代码模板时,list集合是双层的,感觉自己什么地方想错了。随后查看了别人的答案才明白是用集合套集合。

题目:

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

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

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

你可能感兴趣的:(java)