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;
}
}