118. 杨辉三角
- 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
- 在杨辉三角中,每个数是它左上方和右上方的数的和。
示例1:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
python
思路1:
- 先构造[[],[],[],[]]
- 再构造[[None],[None,None],[None,None,None],[None,None,None,None]]
- 在填充上面的列表
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
yh=[[]]*numRows
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col==0 or col ==row:
yh[row][col]=1
else:
yh[row][col]=yh[row-1][col]+yh[row-1][col-1]
return yh
JAVA
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list =new ArrayList<List<Integer>>();
if (numRows<=0)return list;
list.add(new ArrayList<>());
list.get(0).add(1); //[[1]]
for(int i =1;i<numRows;i++){
List<Integer> row=new ArrayList<>();
row.add(1); //i=1,row[1] i=2,row[1] i=3,row[1]
List<Integer> previous = list.get(i-1);
for(int j=1;j<i;j++){
row.add(previous.get(j-1)+previous.get(j));
//i=1,j=1,row[1] i=2,j=1,row[1,2]
}
row.add(1); //i=1,j=1,row[1,1] //i=2,j=1 row[1,2,1]
list.add(row); //[[1],[1,1],[1,2,1]]
}
return list;
}
}