栈的应用场景(三)

最小栈

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;
    }
}
相关推荐
sin_hielo2 分钟前
leetcode 3314(位运算,lowbit)
数据结构·算法·leetcode
Remember_9932 分钟前
【数据结构】深入理解排序算法:从基础原理到高级应用
java·开发语言·数据结构·算法·spring·leetcode·排序算法
鱼跃鹰飞6 分钟前
Leetcode会员专享题:426.将二叉搜索树转换为排序的双向链表
数据结构·算法·leetcode·链表·深度优先
漫随流水7 分钟前
leetcode回溯算法(39.组合总和)
数据结构·算法·leetcode·回溯算法
kklovecode8 分钟前
数据结构---链表 & 栈
c语言·数据结构·算法
苦藤新鸡13 分钟前
20.右旋转图片
数据结构·算法·leetcode·力扣
小龙报32 分钟前
【初阶数据结构】解锁顺序表潜能:一站式实现高效通讯录系统
c语言·数据结构·c++·程序人生·算法·链表·visual studio
历程里程碑35 分钟前
Linux 1 指令(1)入门:6大基础指令详解
linux·运维·服务器·c语言·开发语言·数据结构·c++
-To be number.wan12 小时前
B 树 vs B+ 树:为什么 MySQL 用 B+ 树,而不是 B 树?
数据结构
杨间12 小时前
《排序算法全解析:从基础到优化,一文吃透八大排序!》
c语言·数据结构·排序算法