后天有个面试,要带笔记本电脑,可是我没笔记本电脑,😓,应该是要现场编码,有点紧张,刷个简单的leetcode
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> res;
if(numRows==0)
return res;
res.emplace_back(vector<int>{1});
for(int i=2;i<numRows+1;i++)
{
res.emplace_back(vector<int>{1});
auto& lastvec=res[res.size()-2];
auto& thisvec=res.back();
for(int j=0;j<i-2;j++)
{
thisvec.push_back(lastvec[j]+lastvec[j+1]);
}
thisvec.push_back(lastvec.back());
}
return res;
}
};
中间有个取vector中的上一个行的 auto& lastvec=res[res.size()-2];,这个原本写再了vector::emplace_back之前,引发了异常,才注意到,由于vector在插入元素后内存的位置可能会变化,导致之前的引用不在有效。因此将取上一行引用的代码移动到了emplace_back之后