题解 | #包含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++)