Pascal's Triangle

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]
]

帕斯卡三角形就是杨辉三角形,观察下图可以得到规律

  • 第N层上有N个元素
  • 每一层第一个和最后一个元素都是1
  • 第二层起每一层第n个元素都是前一层n-1位元素 + n位元素之和

Pascal's Triangle

public List<List<Integer>> generate(int numRows) {
    List<List<Integer>> re = new ArrayList<List<Integer>>();
    if (numRows == 0) {
        return re;
    }
    for (int i = 0; i < numRows; i++) {
        List<Integer> row = new ArrayList<Integer>();
        row.add(1);
        for (int j = 1; j < i; j++) {
            List<Integer> pre = re.get(i-1);
            int n = pre.get(j-1) + pre.get(j);
            row.add(n);
        }
        if (i != 0) {
            row.add(1);    
        }
        re.add(row);
    }
    return re;
}