题解 | #集合栈#

集合栈

https://www.nowcoder.com/practice/69f0ffed01c741c5ae5594a23f7cd739

//该题目的难点是容易忽略边界情况下的操作(栈满时的入栈,栈空时的出栈)
class SetOfStacks {
public:
    vector<vector<int> > setOfStacks(vector<vector<int> > ope, int size) {
        // write code here
        vector<vector<int>> set;
        vector<int> s;
        for(int i=0; i<ope.size();i++){
            if(ope[i][0]==1){
                if(s.size()<size)
                        s.push_back(ope[i][1]);                   
                //栈未满,则入栈
                else{
                    set.push_back(s);
                    s.clear();
                    s.push_back(ope[i][1]); 
                }//栈满,将其加入集合,然后清空该栈(等同于创了个新栈)
            }
            else{
                if(s.size()>0){
                    s.pop_back();
                }//栈非空,出栈
                else{
                    if(!set.empty()){
                        s=set[set.size()-1];
                        set.pop_back();
                        s.pop_back();
                    }
                }//栈空,若集合非空,则获取上个存满的栈,将其出栈
            }
            
        }
        if(!s.empty()) set.push_back(s);//由于满了的栈才会加入集合,所以最后可能剩下没满的栈还没加入
        return set;
    }  
};

全部评论

相关推荐

09-17 17:09
门头沟学院 Java
雨忄:有人给出过解法,拖晚点去,然后到时候再找其他理由商量,既增加他们的筛人成本,不一定会给你收回offer ,也能占位避免工贼
秋招的嫡长offer
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-14 22:16
我爱加瓦233:今年行情真的好起来了,暑期实习拿了美团,京东,饿了么三家的Offer,最终去了美团,披上了我的黄马褂,开启送外卖之旅
点赞 评论 收藏
分享
09-28 18:14
门头沟学院 Java
小肥罗:离谱,那我的简历可以这么写:颜值高大长腿,一张臭嘴不要脸,四只眼瓜子脸,入职不用买保险。
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务