java–杨辉三角(用线性表实现)
题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
标题在杨辉三角中,每个数是它左上方和右上方的数的和。
class Solution {
public List<List<Integer>> generate(int numRows) {
//将杨辉三角看作一个list,每一行也是一个list
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
List<Integer> curRow = new ArrayList<>();
curRow.add(1);
for(int j = 1 ; j < i ;j++) {
//确定的是当前行的每个元素==上一行的当前列+上一行的前一列就是我当前需要添加的数字
//得到上一行
List<Integer> preRow = ret.get(i-1);
int num = preRow.get(j) + preRow.get(j-1);
curRow.add(num);
}
//手动在当前行的最后一个位置 添加一个1
curRow.add(1);
ret.add(curRow);
}
return ret;
}
}
总结:
用线性表来实现杨辉三角,将杨辉三角看作一个list,每一行也是一个list。其次可以发现每行第一个和最后一个数的值都为1。难点在于怎么获得上一行的当前列与前一列。