Leedcode day2 杨辉三角
题目介绍
补充背景知识
vector
vector<int> nums;//不指定长度
vector<int> nums(n); // 指定长度为n
void resize (size_type n, value_type val);
resize函数重新分配大小,改变容器的大小,并且创建对象
解题代码
方法1
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector< vector<int> > res(numRows,vector<int>());
for(int i=0;i<numRows;i++){
res[i].resize(i+1);
res[i][0]=1;
res[i][i]=1;
}
if(numRows>2){
for(int i=2;i<numRows;i++){
for(int j=1;j<res[i].size()-1;j++){
res[i][j]=res[i-1][j]+res[i-1][j-1];
}
}
}
方法2
用双vector来处理当前行和下一行。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
if(numRows == 0)
return result;
vector<int> curVec;
vector<int> nextVec;
for(int i = 0;i < numRows; i++)
{
for(int j = 0;j<=i;j++)
{
if(j == 0)
nextVec.push_back(1);
else
{
if(j >= curVec.size())
nextVec.push_back(curVec[j-1]);
else
nextVec.push_back(curVec[j] + curVec[j-1]);
}
}
result.push_back(nextVec);
curVec.swap(nextVec);
nextVec.clear();
}
return result;
}
};