您的位置:首页 > 其它

leetcode - 118. Pascal's Triangle

2018-01-30 13:52 337 查看
Problem:

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

 解释:求前NumRows行
的杨辉三角形。

Solve: 

杨辉三角的规律也很明显,从第二行开始每行第一个和最后一个数都是1,且依次根据上一行每两个相邻的数字相得出下一行的数字。

如第3行是[1,2,1]。第四行就是先补两个1得:[1,1],再根据第三行两两求和
,3,3,添加到中间得:[1,3,3,1]。

主要注意的地方在于第0,1.行这两个特殊的情况。

时间复杂度O(n)AC-1mspublic List<List<Integer>> generate(int numRows) {

List<List<Integer>> lists=new ArrayList<>();
List<Integer> list1=new ArrayList<>();
if(numRows==0){
return lists;
}

list1.add(1);//numsRows==1 的情况
lists.add(list1);

for(int i=2;i<=numRows;i++){
List<Integer> Templist=new ArrayList<>();//用于保存该行
Templist.add(1);
List<Integer> top=lists.get(i-2);//前一行的列表
for(i
4000
nt start=0,end=1;end<top.size();start++,end++){
Templist.add(top.get(start)+top.get(end));
}
Templist.add(1);
lists.add(Templist);
}
return lists;
}后记:这题用递归做也可以,懒癌不想做
就。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: