杨辉三角浅解
作者:互联网
1。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> tangle;
vector<int> a;
a.push_back(1);
tangle.push_back(a);
if(numRows==1){
return tangle;
}
else{
vector<int> b;
b.push_back(1);
b.push_back(1);
tangle.push_back(b);
for(int j=2;j<numRows;j++){
vector<int> c;
for(int k=0;k<j;k++){
if(k==0){
c.push_back(1);
}
else if(k==j-1){
c.push_back(1);
}
else{
c[k]=tangle[numRows-2][k-1]+tangle[numRows-2][k];
}
}
tangle.push_back(c);
}
return tangle;
}
}
};
2.我们先创造一个numrows行numrows列的二维vector数组;
我们一行一行的遍历并且在遍历时对每一行进行resize()操作,将其变为杨辉三角的形式
我们发现每一行的第一个数与最后一个数是相等的;所以我们直接赋值,而中间的数则是与前一行有关。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> tangle(numRows);
for(int i=0;i<numRows;i++){
tangle[i].resize(i+1);
tangle[i][0]=tangle[i][i]=1;
for(int j=1;j<i;j++){
tangle[i][j]=tangle[i-1][j-1]+tangle[i-1][j];
}
}
return tangle;
}
};
标签:int,back,浅解,numRows,push,vector,杨辉三角,tangle 来源: https://blog.csdn.net/weixin_49111956/article/details/123215960