leetcode杨辉三角

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

发表回复