LeetCode OJ: 118. 119. Pascal's Triangle 巴斯卡三角形

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

在LeetCode上有兩題Pascal's TrianglePascal's Triangle II,筆者的分析如下:

目標是要產生如下的數列:

[]
[1]
[1 1]
[1 2 1]
[1 3 3 1]
[1 4 6 4 1]
[1 5 10 5 1]

以上還可再細分成下:
[]
[1]
[1]
[11]
[1 1]
[11 1]
[1 2 1]
[11 2 1]
[1 3 3 1]
[11 3 3 1]
[1 4 6 4 1]
[11 4 6 4 1]
[1 5 10 10 5 1]




於是程式可寫成如下:
public class Solution {
    public List<List<Integer>> generate(int numRows) {
     List<List<Integer>> pascal = new ArrayList<List<Integer>>();
        ArrayList<Integer> row = new ArrayList<Integer>();

        for(int i = 0; i < numRows; i++)
        {
            row.add(0, 1);
            for(int j = 1 ; j < row.size() - 1; j++)
                row.set(j, row.get(j) + row.get(j + 1));

            pascal.add(new ArrayList<Integer>(row));
        }

        return pascal;
    }
}

沒有留言: