两个stack实现,一个存数据,一个存最小值

设计getMin功能的栈

http://www.nowcoder.com/questionTerminal/c623426af02d4c189f92f2a99647bd34

class Solution {
public:
    /**
      [[1,3],[1,2],[1,1],[3],[2],[3]]
     * 数组第一个代表操作,1==push,2==pop,2==getMin
     * 所以 1出现时,后面需要接push的数字
     * 把所有的操作实现完,输出结果就行
     */
    vector<int> getMinStack(vector<vector<int> >& op) {
        vector<int> ans;
        if(op.empty()) return ans;

        for(int i=0;i<op.size();i++){
            if(op[i][0]==1 && op[i].size()==2){
                push(op[i][1]);
            }
            else if(op[i][0]==2 && op[i].size()==1)
                pop();
            else if(op[i][0]==3 && op[i].size()==1)
                ans.push_back(getMin());

        }
        return ans;

    }
    void push(int data){
        if(minStack.empty() ||data<minStack.top())
            minStack.push(data);
        else 
            minStack.push(minStack.top());

        dataStack.push(data);
    }
    void pop(){
        dataStack.pop();
        minStack.pop();
    }
    int getMin(){
        return minStack.top();
    }
private:
    stack<int> dataStack;
    stack<int> minStack;
};
全部评论

相关推荐

11-07 16:07
深圳大学 运营
前端飞升:学长,阿里不是卡双非吗,我深也能去吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
12-07 10:09
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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