题解 | #设计getMin功能的栈#(一个额外栈保存每次添加数据是否影响最小值,判断最小值是否当前出栈元素)

设计getMin功能的栈

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

一个栈存输入的数据。
一个栈存每次输入后,该阶段的最小值。
以空间换时间,每次添加新元素,保存此时最小值元素。

class Solution {
public:
    stack<int> s,min_s;
    vector<int> getMinStack(vector<vector<int> >& op) {
        vector<int> res;
        int op_size = op.size();
        for(int i = 0;i < op_size; i++){
            if(op[i][0] == 1) { // push 
                s.push(op[i][1]);
//当min_s为空或push的值比当前栈中最小值小或等于时,将它push到保存最小值的栈。
                if(min_s.empty() || min_s.top() >= op[i][1]) min_s.push(op[i][1]);
            }
            else if(op[i][0] == 2){
                if(!s.empty()){
// 当s不为空且储存最小值栈中栈顶与要pop的元素一样,两个栈同时pop
                    if(s.top() == min_s.top()) min_s.pop();
                    s.pop();
                }
            }
            else res.push_back(min_s.top());
        }
        return res;
    }
};
全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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