最小栈(栈)

这个题的思路就是用两个栈进行模拟,一个栈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();
    }
};
相关推荐
未若君雅裁37 分钟前
算法复杂度与数据结构:Java 集合篇的第一块基石
java·数据结构·算法
故事和你912 小时前
洛谷-【动态规划2】线性状态动态规划4
开发语言·数据结构·c++·算法·动态规划·图论
小欣加油4 小时前
leetcode 3300 替换为数位和后的最小元素
数据结构·c++·算法·leetcode
晚风予卿云月4 小时前
【枚举】普通枚举
数据结构·c++·算法·竞赛·算法随笔
不会就选b4 小时前
数据结构之顺序表
数据结构
z落落4 小时前
C# Hashtable 哈希表+SortedList 有序键值对集合
数据结构·散列表
Brilliantwxx4 小时前
【C++】 深入理解红黑树:实现与原理全解
数据结构·c++·笔记·算法·青少年编程·红黑树
Dlrb12115 小时前
数据结构-排序算法
数据结构·算法·排序算法·插入排序·堆排序·希尔排序·快速排序
过期动态5 小时前
【LeetCode 热题 100】无重复字符的最长子串
java·数据结构·spring boot·算法·leetcode·职场和发展
莫等闲-6 小时前
leetcode42. 接雨水 leetcode84.柱状图中最大的矩形
数据结构·c++·算法·leetcode