栈的应用场景(三)

最小栈

1.题目

2.画图分析


3.代码实现

java 复制代码
package Stack;

import java.util.Stack;
public class MinStack {
    private Stack <Integer> stack;
    private Stack <Integer> MinStack;
    public MinStack() {
         stack = new Stack<>();
         MinStack = new Stack<>();
    }

    public void push(int val) {
        //普通栈只要是元素都得放
        //最小栈 如果为空,放元素.如果不为空且要放的元素比栈顶元素小,也要放
        stack.push(val);
        if(MinStack.empty()){
            MinStack.push(val);
        }
        else{
            int peek = MinStack.peek();
            if(val <= peek){
                MinStack.push(val);
            }
        }
    }

    public void pop() {
      int val = stack.pop();
      //如果最小栈不为空
        if(!MinStack.empty()){
            if(val == MinStack.peek()){
                MinStack.pop();
            }
        }
    }
    //获取普通栈的栈顶
    public int top() {
        return stack.peek();
    }

    public int getMin() {
        if(!MinStack.empty()){
                return MinStack.peek();
            }
        return -1;
    }
}
相关推荐
橘颂TA40 分钟前
【剑斩OFFER】算法的暴力美学——两数之和
数据结构·算法·leetcode·力扣·结构与算法
tobias.b1 小时前
408真题-2009-7-数据结构-无向连通图性质
数据结构·算法·408考研·408真题·真题解析
阿猿收手吧!2 小时前
【C++】JSON核心数据结构解析及JSONCPP使用
数据结构·c++·json
tobias.b2 小时前
408真题解析-2009-9-数据结构-小根堆-排序
数据结构·408考研·408真题·真题解析
D_FW2 小时前
数据结构第二章:线性表
数据结构·算法
tobias.b3 小时前
408真题解析-2009-8-数据结构-B树-定义及性质
数据结构·b树·计算机考研·408考研·408真题
hk11243 小时前
【Architecture/Refactoring】2026年度企业级遗留系统重构与高并发架构基准索引 (Grandmaster Edition)
数据结构·微服务·系统架构·数据集·devops
im_AMBER3 小时前
Leetcode 95 分割链表
数据结构·c++·笔记·学习·算法·leetcode·链表
无限进步_4 小时前
【C语言】堆(Heap)的数据结构与实现:从构建到应用
c语言·数据结构·c++·后端·其他·算法·visual studio
再难也得平4 小时前
两数之和和字母异位词分组
数据结构·算法