最小栈(栈)

这个题的思路就是用两个栈进行模拟,一个栈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();
    }
};
相关推荐
fufu03112 小时前
Linux环境下的C语言编程(四十八)
数据结构·算法·排序算法
思成Codes3 小时前
数据结构:基础线段树——线段树系列(提供模板)
数据结构·算法
卜锦元6 小时前
Golang后端性能优化手册(第三章:代码层面性能优化)
开发语言·数据结构·后端·算法·性能优化·golang
2401_841495647 小时前
【LeetCode刷题】打家劫舍
数据结构·python·算法·leetcode·动态规划·数组·传统dp数组
冰西瓜6007 小时前
STL——vector
数据结构·c++·算法
Bdygsl7 小时前
数据结构 —— 双向循环链表
数据结构·链表
程序员阿鹏7 小时前
怎么理解削峰填谷?
java·开发语言·数据结构·spring·zookeeper·rabbitmq·rab
LYFlied8 小时前
【每日算法】LeetCode 300. 最长递增子序列
前端·数据结构·算法·leetcode·职场和发展
2401_877274249 小时前
2025数据结构实验八:排序
数据结构·算法·排序算法