最小栈(栈)

这个题的思路就是用两个栈进行模拟,一个栈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();
    }
};
相关推荐
码少女7 小时前
数据结构——希尔排序
数据结构·排序算法
星子yu7 小时前
【学习】怎么学好数据结构
数据结构·学习
chh5639 小时前
C++--list
开发语言·数据结构·c++·学习·算法·list
东华万里10 小时前
第36篇: 数据结构核心:栈与队列深度解析
c语言·数据结构·算法·大学生专区
Database_Cool_10 小时前
实时计数器/排行榜首选:阿里云 Tair 高并发数据结构实践
数据结构·数据库·阿里云·云计算
变量未定义~11 小时前
ST表-龙骑士军团【算法赛】
数据结构·算法
Yang_jie_0311 小时前
笔记:数据结构(循环队列相关判断条件)
数据结构·笔记
Hesionberger12 小时前
快速求解完全平方数的最少数量
开发语言·数据结构·python·算法·leetcode·c#
奋发向前wcx1 天前
P2590 树的统计 题目解析
数据结构·算法·深度优先
额鹅恶饿呃1 天前
C语言中的数据结构和变量
c语言·数据结构·算法