题目描述:
Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it.
Example:
Input: 5 Output: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
中文理解:给出层数,实现杨辉三角。
解题思路:在numRows等于0,1,2时属于特殊情况,需要单独处理,在numsRows>3之后,除了每行第一个和最后一个元素值为1,其他均采用图给出的示例的递推公式来实现。
代码(java):
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res=new ArrayList<List<Integer>>();
if(numRows==0)return res;
else if(numRows==1){
List<Integer> element=new ArrayList<Integer>();
element.add(1);
res.add(element);
return res;
}
else if(numRows==2){
List<Integer> element0=new ArrayList<Integer>();
element0.add(1);
res.add(element0);
List<Integer> element=new ArrayList<Integer>();
element.add(1);
element.add(1);
res.add(element);
return res;
}
else{
List<Integer> element=new ArrayList<Integer>();
element.add(1);
res.add(element);
List<Integer> element2=new ArrayList<Integer>();
element2.add(1);
element2.add(1);
res.add(element2);
for(int i=2;i<numRows;i++){
List<Integer> elementTmp=new ArrayList<Integer>();
for(int j=0;j<=i;j++){
if(j==0 || j==i){
elementTmp.add(1);
}
else{
elementTmp.add(res.get(i-1).get(j-1)+res.get(i-1).get(j));
}
}
res.add(elementTmp);
}
}
return res;
}
}