两个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;
};
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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