您的位置:首页 > 其它

119 Pascal's Triangle II

2015-03-16 17:32 211 查看
方法一:(模拟杨辉三角的特点,用一个数组进行不断更新,也就是上一层两数的和为下一层的数,循环k次,时间复杂度是O(n^2)的,空间复杂度是O(k)的class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int>vec;
vec.push_back(1);
for(int i=1; i<=rowIndex; i++){
int p=0, a=0, b=vec[p];
for(;p<i;p++){
vec[p]=a+b;
a=b;
if(p+1<i)
b=vec[p+1];
}
vec.push_back(1);
}
return vec;
}
};
方法二:(可以知道杨辉三角第n层的序列其实就是二项式(a+b)^n的系数,按此规律可以进行打表计算class Solution {
public:
vector<int> getRow(int rowIndex) {
int C[rowIndex+2][rowIndex+2];
memset(C, 0, sizeof(C));
for(int i=0; i<=rowIndex; i++){
C[i][0]=1;
for(int j=1; j<=i; j++)
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
vector<int>vec;
int r = rowIndex;
for(int i=0; i<=r; i++){
cout<<C[r][i]<<endl;
vec.push_back(C[r][i]);
}
return vec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: