PascalTriangle

问题描述:输出指定行数的帕斯卡三角形,要使用List>存储。


解决:先知道帕斯卡三角形的特点 

1.第一行元素为[1]

2.每一行的首尾元素都是1

3.每一行除首尾以外的元素都是其上一行的左右元素之和。


第一点和第二点实现起来都不难,为实现第三点,我们定义pre为上一行的引用,cur为当前行引用。根据pre中元素值来计算出cur。当cur计算完成后,pre=cur来继续计算下一行。时间复杂度为o(1+2+3+...+n) = o(n^2)。


/*
 * Given numRows, generate the first numRows of Pascal's triangle.
 
For example, given numRows = 5,
Return
 
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]
 */
import java.util.ArrayList;
import java.util.List;
 
public class PascalTriangle {
    public List> generate(int numRows) {
        List> res = new ArrayList<>();
        if(numRows <= 0)
                return res;
        List pre = new ArrayList();
       //初始化第一行
        pre.add(1);
        res.add(pre);
        for(int i=2; i<=numRows; i++) {
                List cur = new ArrayList<>();
         //首元素为1
                cur.add(1);
         //计算中间元素
                for(int j=0; j



你可能感兴趣的:(leetcode)