Given numRows, generate the first numRowsof Pascal's triangle.
For example, given numRows = 5,
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
分析:题目意思就是打印一个杨辉三角。但是不是用的数组,使用集合来存储。题目不难有两种解法:
方法一、就类似用队列解决一样,不过要提醒的是,当向ArrayList集合中同一个位置添加值时,不会替换,因此ss.set(j, ss.get(j)+ss.get(j+1));
方法二:就是跟利用数组一样a[n][n]=a[n-1][n]+a[n-1][n];
具体代码如下:
public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ls=new ArrayList();
/* List<Integer> ss = newArrayList<Integer>();
for(inti=0;i<numRows;i++)
{
ss.add(0,1);
for(intj=1;j<ss.size()-1;j++)
ss.set(j,ss.get(j)+ss.get(j+1));
ls.add(newArrayList<Integer>(ss));
}*/
for(inti=0;i<numRows;i++)
{
ArrayList<Integer>lss = new ArrayList<Integer>();
for(intj=0;j<=i;j++){
if(j==0||j==i){
lss.add(1);
}else{
lss.add(ls.get(i-1).get(j)+ls.get(i-1).get(j-1));
}
}
ls.add(lss);
}
return ls;
}
}