最小栈(栈)

这个题的思路就是用两个栈进行模拟,一个栈resource正常插入,删除。一个栈minval用来存目前栈中最小的数,将最小的数放在了该栈minval的顶部,这样可以直接取栈顶为最小元素。**要注意的是,栈中可能会有相同的元素,因此最小的元素也有可能相同,在向minval入栈时,相同的元素也要入栈,不仅仅是小于栈minval顶的元素,否则在删除时会出现错误。**所以在删除的时候也要判断,当前resource的栈顶是否与minval的栈顶相等,相等直接删除。

cpp 复制代码
class MinStack {
private:
    stack<int> source;
    stack<int> minval;
public:
    MinStack() {
        
    }
    
    void push(int val) {
        source.push(val);
        if(minval.empty() || minval.top()>=val) minval.push(val);
    }
    
    void pop() {
        int v=source.top();
        source.pop();
        if(minval.top() == v) minval.pop();
    }
    
    int top() {
        return source.top();
    }
    
    int getMin() {
        return minval.top();
    }
};
相关推荐
m0_672703311 小时前
上机练习第51天
数据结构·c++·算法
仰泳的熊猫2 小时前
题目2577:蓝桥杯2020年第十一届省赛真题-走方格
数据结构·c++·算法·蓝桥杯
灰色小旋风3 小时前
力扣13 罗马数字转整数
数据结构·c++·算法·leetcode
ccLianLian4 小时前
数论·欧拉函数
数据结构·算法
会编程的土豆5 小时前
C++中的 lower_bound 和 upper_bound:一篇讲清楚
java·数据结构·算法
HUTAC5 小时前
关于进制转换及其应用的算法题总结
数据结构·c++·算法
XW01059995 小时前
6-函数-1 使用函数求特殊a串数列和
数据结构·python·算法
沉鱼.445 小时前
枚举问题集
java·数据结构·算法
罗超驿6 小时前
Java数据结构_栈_算法题
java·数据结构·
️是787 小时前
信息奥赛一本通—编程启蒙(3346:【例60.3】 找素数)
数据结构·c++·算法