Leetcode No.118&119杨辉三角

题目大意

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

image.png

示例

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

思路

用List>存储每一行的数列,在迭代地推算下一行的数列,首先要取出前一行。需要注意数组下标不要越界。

代码一

 public List> generate(int numRows) {
       List> res = new ArrayList<>();
       if(numRows==0) return res;
       res.add(new ArrayList<>(Arrays.asList(1)));
        for(int i=1;i origin = res.get(i-1);
            List cur = new ArrayList<>();
            cur.add(1);  //第0列总是0
            for(int j=1;j

运行时间2ms。

代码二

 public List> generate(int numRows) {
        List> res = new ArrayList<>();
         if(numRows==0) return res;
        res.add(new ArrayList<>(Arrays.asList(1)));
        if(numRows==1) return res;
        res.add(new ArrayList<>(Arrays.asList(1,1)));
        if(numRows==2) return res;
        for(int i=2;i origin = res.get(i-1);
            List cur = new ArrayList<>();
            for(int j=0;j<=i;j++) {
                if(j==0 || j==i) cur.add(1);
                else cur.add(origin.get(j-1)+origin.get(j));
            }
            res.add(cur);
        }
        return res;
}

运行时间1ms。

你可能感兴趣的:(Leetcode No.118&119杨辉三角)