zoukankan      html  css  js  c++  java
  • 集合栈 牛客网 程序员面试金典 C++ Python

    集合栈 牛客网 程序员面试金典 C++ Python

    • 题目描述
    • 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
    • 给定一个操作序列int[][2] ope(C++为vector&ltvector&ltint>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请返回一个int[],为完成所有操作后的SetOfStacks,顺序应为从下到上,默认初始的SetOfStacks为空。保证数据合法。

    C++

    class SetOfStacks {
    public:
    //run: 5ms memory:496k
        vector<vector<int>> setOfStacks(vector<vector<int>> ope, int size){
            vector<vector<int>> ret;
            int len = ope.size();
            if(len == 0 || size <= 0) return ret;
            vector<int> tmp;
            for (int i = 0; i < len; i++){
                if (ope[i][0] == 1){
                    if(tmp.size() == size){
                        ret.push_back(tmp);
                        tmp.clear();
                    }
                    tmp.push_back(ope[i][1]);
                }else{
                    int retSize = ret.size();
                    int tmpSize = tmp.size();
                    if ((0 == retSize) && (tmpSize == 0))
                        int pass_and_do_nothing_may_you_can_print_something = 0;
                    else{
                        if(tmpSize == 0 ){
                            tmp = ret[retSize - 1];
                            ret.pop_back();
                        }
                        tmp.pop_back();
                    }
                }
            }
            if (tmp.size()) ret.push_back(tmp);
            return ret;
        }
    };

    Python

    class SetOfStacks:
    #run:61ms memory:5712k
        def setOfStacks(self, ope, size):
            if size < 1: return None
            if None == ope: return None
            ret = []
            lt = []
            for i in range(len(ope)):
                item = ope[i]
                if item[0] == 1:
                    if len(lt) == size:
                        ret.append(lt)
                        lt = []
                    lt.append(item[1])
                else:
                    if (len(ret) == 0 and len(lt) == 0):pass
                    else:
                        if len(lt) == 0:lt = ret.pop()
                        lt.pop()
            ret.append(lt)
            return ret
  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/vercont/p/10210298.html
Copyright © 2011-2022 走看看