杨辉三角的第k行可以根据组合数进行推到,比如第i行的第j个就是C(i,j)=
n
!
m
!
(
n
−
m
)
!
\frac{n!}{m!(n-m)!}
m!(n−m)!n! = C(i,j-1)
n
−
m
+
1
m
\frac{n-m+1}{m}
mn−m+1
所以可以通过递推公式线性求组合数。
code:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> row(rowIndex + 1);
row[0] = 1;
for (int i = 1; i <= rowIndex; ++i) {
row[i] = 1LL * row[i - 1] * (rowIndex - i + 1) / i;
}
return row;
}
};