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] ]
找规律,第一的二行单独处理,从第三行开始,在上次的基础上,两边添加1,中间是上次的集合每个元素和它后一个元素的和。
public class Solution {
public List<List<Integer>> generate(int numRows)
{
List<List<Integer>> retlist=new ArrayList<>();
if(numRows==0)
return retlist;
ArrayList<Integer> arraylist=new ArrayList<>();
arraylist.add(1);
retlist.add(new ArrayList<>(arraylist));
if(numRows==1)
return retlist;
arraylist.add(1);
retlist.add(new ArrayList<>(arraylist));
if(numRows==2)
return retlist;
for(int i=2;i<numRows;i++)
{
ArrayList<Integer> arr=new ArrayList<>(i+1);
ArrayList<Integer> lastarr=(ArrayList<Integer>) retlist.get(retlist.size()-1);
int size=lastarr.size();
arr.add(1);
for(int j=0;j<size-1;j++)
arr.add(lastarr.get(j)+lastarr.get(j+1));
arr.add(1);
retlist.add(arr);
}
return retlist;
}
}