力扣 面试题 03.02. 栈的最小值 双栈
发布日期:2021-11-05 06:59:31 浏览次数:20 分类:技术文章

本文共 1443 字,大约阅读时间需要 4 分钟。

在这里插入图片描述
思路:搞个双栈,一个栈就做正常的操作,另外一个栈搞成单调非增的即可。有两种实现方式。

class MinStack {
public: /** initialize your data structure here. */ MinStack() {
} void push(int x) {
s.push(x); if(MIN.empty()||x<=MIN.top()) MIN.push(x); } void pop() {
//第一种 pop时要判断 if(s.top()==MIN.top()) MIN.pop(); s.pop(); } int top() {
return s.top(); } int getMin() {
return MIN.top(); }private: //正常的栈 stack
s; //单调非升栈 stack
MIN;};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(x); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */
class MinStack {
public: /** initialize your data structure here. */ MinStack() {
} void push(int x) {
s.push(x); if(MIN.empty()) MIN.push(x); else MIN.push(min(x,MIN.top())); } void pop() {
s.pop(); MIN.pop(); } int top() {
return s.top(); } int getMin() {
return MIN.top(); }private: //正常的栈 stack
s; //单调非升栈 stack
MIN;};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(x); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */

转载地址:https://blog.csdn.net/xiji333/article/details/107968926 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:力扣 946. 验证栈序列 栈
下一篇:力扣 856. 括号的分数 递归/栈/数学

发表评论

最新留言

不错!
[***.144.177.141]2024年03月30日 14时22分25秒