这题的原理就不多赘述了,主要是理解到一点,对于每一行来说,首尾两个值是固定的,其余的值都可以用下面的式子得到:
ans[i][j] = ans[i-1][j-1] + ans[i-1][j];
其中i表示行,j表示列,和杨辉三角的原理一样,第i行第j列的数就是由第i-1行第j-1列的数加上第i-1行第j列的数得到的,由此便可推出本题的答案。AC代码如下:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans(numRows);
for(int i=0;i<numRows;i++) {
ans[i].resize(i+1);
ans[i][0]= ans[i][i] = 1;
for(int j=1;j<i;j++) {
ans[i][j] = ans[i-1][j-1] + ans[i-1][j];
}
}
return ans;
}
};