力扣---楊輝三角(用線性表實現)
阿新 • • 發佈:2021-02-01
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。難點在於怎麼獲得上一行的當前列與前一列。