当前位置 博文首页 > 是琳琳呀!的博客:杨辉三角(java)
https://leetcode-cn.com/problems/pascals-triangle/杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
解析:
此题使用list数据结构:
杨辉三角的特性是每行第一个和最后一个数字均为1;下一行数字是其上方前一行相邻数字相加;
使用List保存每行的结果。
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<>();
if(numRows <= 0) return ret;
//第一行的list
List<Integer> list = new ArrayList<>();
list.add(1);
//把第一行的list放到ret当中
ret.add(list);
for(int i = 1;i < numRows;i++) {
List<Integer> curRow = new ArrayList<>();
curRow.add(1);
for(int j = 1 ;j < i;j++) {
//确定的是当前行的每个元素 == 上一行的当前列+上一行的前一列就是我当前需要添加的数字
curRow.add(ret.get(i-1).get(j-1)+ret.get(i-1).get(j));
}
//手动在当前行的最后一个位置 添加一个1
curRow.add(1);
ret.add(curRow);
}
return ret;
}
}
cs