主要思路:先将杨辉三角的二维数组预处理出来,再根据题目要求,求出rowIndex行。
Python:
python
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
yh_trigle = [[0] * 34 for _ in range(34)]
for i in range(34):
yh_trigle[i][i] = 1
yh_trigle[i][0] = 1
for j in range(1, i):
yh_trigle[i][j] = yh_trigle[i - 1][j] + yh_trigle[i - 1][j - 1]
return yh_trigle[rowIndex][0: rowIndex + 1]
C++:(自己写的老出现越界的情况,实在不明白!!!,以下参考了灵神的代码,但是我的思路是一样的)
cpp
const int MX = 34;
vector<int> c[MX];
auto init = []() {
for (int i = 0; i < MX; i++) {
c[i].resize(i + 1, 1);
for (int j = 1; j < i; j++) {
// 左上方的数 + 正上方的数
c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
}
}
return 0;
}();
class Solution {
public:
vector<int> getRow(int rowIndex) {
return c[rowIndex];
}
};
加油!!!