栈的应用场景(三)

最小栈

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;
    }
}
相关推荐
阿豪学编程7 小时前
面试题map/unordered相关
数据结构
武藤一雄7 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
梦想的颜色8 小时前
mongoTemplate + Java 增删改查基础介绍
数据结构·数据库·mysql
叶小鸡9 小时前
小鸡玩算法-力扣HOT100-堆
数据结构·算法·leetcode
LUVK_11 小时前
第七章查找
数据结构·c++·考研·算法·408
khalil102011 小时前
代码随想录算法训练营Day-31贪心算法 | 56. 合并区间、738. 单调递增的数字、968. 监控二叉树
数据结构·c++·算法·leetcode·贪心算法·二叉树·递归
数智化精益手记局12 小时前
人员排班管理软件的自动化功能解析:解决传统手工人员进行排班管理耗时长的难题
运维·数据结构·人工智能·信息可视化·自动化·制造·精益工程
LeocenaY13 小时前
C语言面试题总结
c语言·开发语言·数据结构
睡觉就不困鸭14 小时前
第11天 删除有序数组中的重复项 II
数据结构
im_AMBER14 小时前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode