0
点赞
收藏
分享

微信扫一扫

155. Min Stack

柠檬果然酸 2022-03-12 阅读 34

大致意思就是设计一个堆, push, pop, top, 和返回最小值。

在这里,我使用的是 Int 对堆栈。 该对的第一个值将存储普通堆栈的元素,第二个值将存储堆栈中该点的最小值。 因此,即使堆栈的最小元素从顶部移除,我们仍然拥有该对中下一个最小元素的备份。 因此,对于压入堆栈的每个元素,它都会存储其对应的最小值。

class MinStack {
public:
    vector< pair<int,int> > s;
	
    MinStack() { }
    
    void push(int val) {
        if(s.empty())
            s.push_back({val,val});
        else
            s.push_back({val,min(s.back().second,val)});    
    }
    
    void pop() { s.pop_back(); }
    
    int top() { return s.back().first; }
    
    int getMin() { return s.back().second; }
};
举报

相关推荐

0 条评论