118. Pascal's Triangle

QUESTION:

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

EXPLANATION:

其实就是简单的杨辉三角

1.第一个和最后一个数是1

2.每个数就等于前一行的i和i-1的和

推算出来的公式就是:C(n+1,i)=C(n,i)+C(n,i-1)

其实有时候我们知道每个公式的原理和推算公式,或许我们更应该关注的是实际应用的过程。这个地方我们推荐一个有关算法的文章,或许在真正的实际应用中,我们才能知道算法具体的应用实际是什么。

SOLUTION:

public class Solution {
    public ArrayList<List<Integer>> generateResult = new ArrayList<>();
    public List<List<Integer>> generate(int numRows) {
        if(numRows == 0) return generateResult;
        for(int i = 0;i<numRows;i++){
            ArrayList<Integer> lineResult = new ArrayList<>();
            for(int j = 0;j<i+1;j++){
                if(j==0 || j==i){
                    lineResult.add(1);
                    continue;
                }
                ArrayList temp = (ArrayList) generateResult.get(i-1);
                int tmp = (int) temp.get(j)+(int) temp.get(j-1);
                lineResult.add(tmp);
            }
            generateResult.add(lineResult);
        }
        return generateResult;
    }
}