1. 質問
119. ヤン・フイ・トライアングル II - LeetCode
負でないインデックスを指定すると
rowIndex
、「Yang Hui Triangle」の行を返しますrowIndex
。「楊輝の三角形」では、それぞれの数字は左上と右上の数字の合計です。
2. 例
输入: rowIndex = 3
输出: [1,3,3,1]
输入: rowIndex = 3
输出: [1,3,3,1]
输入: rowIndex = 1
输出: [1,1]
3. 分析
論理:
1. 質問のYang Hui三角形はピラミッドの形をしていますが、例の出力を見ると、出力は配列であることがわかり、Yang Hui三角形が2次元配列であることがわかります。
2. この二次元配列は規則的で、1列目の要素はすべて1、対角線上の要素の値はすべて1、残りの要素はa[i-1][j-1]+aとなります。 [i-1][j]
戻り値: 例を見ると、行 a[rowIndex] が返されることがわかります。
4. コードの実装
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<vector<int>> vv(rowIndex+1);
//将第一列和对角线元素都置1
for(size_t i = 0;i<=rowIndex;i++)
{
vv[i].resize(i+1);
vv[i][0] = vv[i][i] = 1;
}
//将其余元素进行计算
for(int i = 0;i<vv.size();i++)
{
for(int j = 1;j<i;j++)
{
vv[i][j] = vv[i-1][j-1] + vv[i-1][j];
}
}
//返回该行元素
return vv[rowIndex];
}
};