题目
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
分析
解法1:
#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
class MyClass
{
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> res(numRows);
for (int i = 0; i < numRows; ++i)
{
res[i].resize(i + 1);//生成每一行的宽度
res[i][0] = 1;
res[i][i] = 1;
for (int j = 1; j < i; ++j)
{
res[i][j] = res[i - 1][j - 1] + res[i - 1][j];
}
}
return res;
}
};
解法2:
vector<vector<int>> dst;
if( numRows == 0 ){
return dst;
}
vector<int> last;
for(int i = 1;i <= numRows;i++){
vector<int> temp;
temp.push_back(1);
if( i == 1 ) {
} else if( i == 2) {
temp.push_back(1);
} else {
for ( int j = 0;j < i-2 ;j++) {
temp.push_back( last[j] + last[j+1] );
}
temp.push_back(1);
}
dst.push_back(temp);
last = temp;
}
return dst;
}