题解 | #包含min函数的栈#

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

具体做法:

1、构建两个栈,用于实现查找栈的最小值;

2、栈stack1按正常压入元素;栈stack2用来实现获取栈的最小值:当stack2为空时,将元素压入栈;如果输入的元素大于stack2栈顶的元素,那么stack2就压入与栈顶相同的元素(因为此时栈中的最小元素依然是栈顶元素);当输入元素不大于栈顶元素时,将输入元素压入栈stack2,因为此时栈的最小元素发生了变化。

class Solution {
  private:
    stack<int> stack1;
    stack<int> stack2;
  public:
    void push(int value) {
        stack1.push(value);
        if (stack2.empty() || value <= stack2.top()) {
            stack2.push(value);
        } else {
            stack2.push(stack2.top());
        }
    }
    void pop() {
        stack1.pop();
        stack2.pop();
    }
    int top() {
        return stack1.top();
    }
    int min() {
        return stack2.top();
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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