Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1].
Pascal三角形也叫杨辉三角形。杨辉三角形按如下性质进行排列:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1...该题目的是求Pascal三角形的第k行。采用从vector尾部往前计算下一行的数值。
假设k=3,申请k+1个空间
第一行,j和tmp指向最后一个元素,不做任何操作,tmp - 1。
第二行 j指向tmp指向的元素,计算第二行1后面的第一个元素 pascal[j]+pascal[j-1],j-1。当j指向最后一个元素时,结束前面的加法操作,tmp-1
第三行重复上述操作,直到j指向最后一个元素。
完整代码如下class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> pascal(rowIndex+1, 1);
int i, j, tmp = rowIndex;
for (i = 0; i < rowIndex; ++i) {
for (j = tmp; j < rowIndex; ++j) {
pascal[j] = pascal[j] + pascal[j + 1];
}
--tmp;
}
return pascal;
}
};

本文介绍了一种高效计算杨辉三角(Pascal三角)第K行的方法。通过使用一个向量并从尾部向前计算下一行的数值,实现对指定行的快速获取。适用于数学算法及编程学习。
1035

被折叠的 条评论
为什么被折叠?



