后天有个面试,要带笔记本电脑,可是我没笔记本电脑,😓,应该是要现场编码,有点紧张,刷个简单的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之后