给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路:杨辉三角一看大家应该就明白,就是每一个数都等于其左上右上的数的和,首先我们可以知道第一个list是1然后每一个sub_list开始和结尾都是1,只算中间的数就可以.就可以往后推理,
例如:list[2][1] = list[1][0]+list[1][1]
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list_all = new ArrayList<List<Integer>>();
if(numRows<1){
return list_all;
}
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
list_all.add(list1);
for(int i=1;i<numRows;i++){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
List<Integer> list_p = list_all.get(i-1);
for(int j=1;j<i;j++){
list.add(list_p.get(j-1)+list_p.get(j));
}
list.add(1);
list_all.add(list);
}
return list_all;
}
}
本文介绍了一种生成杨辉三角的算法实现,通过迭代计算每一行的元素,利用前一行的数据来确定当前行的数值。算法从第一行的1开始,逐步构建整个三角形,适用于非负整数行数的生成。
1447

被折叠的 条评论
为什么被折叠?



