一个栈实现

设计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;
    }
};
全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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