获取栈中最小值

import java.util.Stack;

/**
 * @author chencc
 * @Description 获取栈中最小值
 * @Date 2022/3/16 15:06
 */
public class GetMinStack {
    //构建一个栈
    public static class MyStack {
        //真实栈用来存放数据
        public Stack<Integer> stackData;
        //存在当前栈数据中,最小数
        public Stack<Integer> stackMin;

        //构造器,初始化
        public MyStack() {
            this.stackData = new Stack<Integer>();
            this.stackMin = new Stack<Integer>();
        }

        //插入数据
        public void push(int value) {
            //当最小栈为空时,直接插入当前数
            if (stackMin.isEmpty()) {
                stackMin.push(value);

                //当插入数小于当前栈顶的数,直接插入当前数
            } else if (value < stackMin.peek()) {
                stackMin.push(value);

                //此时插入当前栈顶的数
            } else {
                stackMin.push(stackMin.peek());
            }
            stackData.push(value);
        }

        //弹出栈数据
        public int pop() {
            if (stackData.isEmpty()) {
                throw new RuntimeException("当前栈为空");
            }
            stackMin.pop();
            return stackData.pop();
        }

        //获取栈中最小值
        public int getMin() {
            if (stackMin.isEmpty()) {
                throw new RuntimeException("当前栈为空");
            }
            return stackMin.peek();
        }
    }

    public static void main(String[] args) {
        MyStack stack = new MyStack();
        stack.push(3);
        stack.push(0);
        System.out.println(stack.getMin());
        stack.pop();
        System.out.println(stack.getMin());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值