文章目录
题目:118. 杨辉三角
Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle.
In Pascal’s triangle, each number is the sum of the two numbers directly above it.
Example:
Input: 5
Output:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
基本思想:数学
- 当前元素的结果等于其上面元素的值加上其左上角元素的值
cpp版本
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> res(numRows);
for(int i = 0; i < numRows; ++i){
res[i] = vector<int>(i + 1, 0);
for(int j = 0; j <= i; ++j){
if(i > 0 && j > 0){
res[i][j] = res[i - 1][j - 1] + (i == j? 0 : res[i - 1][j]);
}
else{//最左边和最上边的情况
res[i][j] = 1;
}
}
}
return res;
}
};
python版本
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
res = [[] for i in range(numRows)]
for i in range(numRows):
res[i] = [0 for j in range(i + 1)]
for j in range(i + 1):
if i > 0 and j > 0:
res[i][j] = res[i - 1][j - 1] + (0 if j == i else res[i - 1][j])
else:
res[i][j] = 1
return res