题目:
解:
先考虑numRows小于3的情况(非常简单,直接赋值),再考虑numRows大于3的情况(每次循环记录上一次行的vector),然后根据相应的规则相加得到最新一行的vector,同时把最新的一行的vector赋给上一行即可,循环到numRows结束.
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int> > ans;
vector<int> last;
if(numRows < 3) {
for(int i=0; i<numRows; i++) {
vector<int> temp;
for(int j=0; j<i+1; j++) {
temp.push_back(1);
}
ans.push_back(temp);
}
} else {
for(int i=0; i<2; i++) {
vector<int> temp;
for(int j=0; j<i+1; j++) {
temp.push_back(1);
}
last = temp;
ans.push_back(temp);
}
for(int i=2; i<numRows; i++) {
vector<int> temp;
temp.push_back(1);
for(int j=1; j<last.size(); j++) {
temp.push_back(last[j]+last[j-1]);
}
temp.push_back(1);
last = temp;
ans.push_back(last);
}
}
return ans;
}
};