一个栈实现

设计getMin功能的栈

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

找一篇一个栈实现的题解还真不容易

class Solution {
public:
    /**
     * return a array which include all ans for op3
     * @param op int整型vector<vector<>> operator
     * @return int整型vector
     */
    vector<int> getMinStack(vector<vector<int> >& op) {
        // write code here
        stack<int>s;
        int Mi=0;
        //为空 插入arr
        //>=之前的最小值 插入Min_last + arr
        vector<int>ans;
        for(auto it:op) {
            if(it[0]==1) {
                if(s.empty()) {
                    s.push(it[1]);
                    Mi=it[1];
                } else {
                    s.push(it[1]-Mi);
                    Mi=min(Mi,it[1]);
                }
            } else if(it[0]==2) {
                if(s.size()==1)
                    ;
                else {
                    if(s.top()>=0) {
                        ;
                    } else {
                        Mi-=s.top();
                    }
                }
                s.pop();

            } else {
                ans.push_back(Mi);
            }
        }
        return ans;
    }
};
全部评论

相关推荐

4 收藏 评论
分享
牛客网
牛客企业服务