zoukankan      html  css  js  c++  java
  • LeetCode

    前言

    /**
     * @Description LeetCode 155. 最小栈
     * 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
     *      push(x) —— 将元素 x 推入栈中。
     *      pop() —— 删除栈顶的元素。
     *      top() —— 获取栈顶元素。
     *      getMin() —— 检索栈中的最小元素。
     *
     * 来源:力扣(LeetCode)
     * 链接:https://leetcode-cn.com/problems/min-stack
     */
    

    具体实现

    • 实现类
    import java.util.Stack;
    
    public class MinStack {
    
        /**
         * 栈
         */
        private Stack<Integer> stack;
    
        /**
         * 辅助栈
         */
        private Stack<Integer> minStack;
    
        /**
         * 初始化
         */
        public MinStack() {
            stack = new Stack<>();
            minStack = new Stack<>();
        }
    
        /**
         * 将元素推入栈中
         * 每当push()新值进来时,
         * 如果小于等于 minStack,
         * 则一起push()到minStack,即更新了栈顶最小值
         * @param val
         */
        public void push(int val) {
            stack.add(val);
    
            if (minStack.isEmpty() || minStack.peek() >= val) {
                minStack.add(val);
            }
        }
    
        /**
         * 删除栈顶的元素
         * 判断将pop()出去的元素值是否是minStack栈顶元素值(即最小值),
         * 如果是则将minStack栈顶元素一起pop(),
         * 这样可以保证minStack栈顶元素始终是stack中的最小值。
         */
        public void pop() {
            if (!stack.isEmpty()) {
                if (stack.pop().equals(minStack.peek())) {
                    minStack.pop();
                }
            }
        }
    
        /**
         * 获取栈顶元素
         * @return
         */
        public int top() {
            if (!stack.isEmpty()) {
                return stack.peek();
            }
            throw new RuntimeException("栈中元素为空,此操作非法");
        }
    
        /**
         * 检索栈中的最小元素
         * 返回minStack栈顶
         * @return
         */
        public int getMin() {
            if (!minStack.isEmpty()) {
                return minStack.peek();
            }
            throw new RuntimeException("栈中元素为空,此操作非法");
        }
    
    }
    
    - End -
    一个努力中的公众号
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:95.8℃
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    2020-07-21日报博客
    java第十九天
    Java第十八章
    Java第十七天
    Java第十六天
    Java第十五天
    Java第十四天
    Java第十三天
    Pytorch-数据增强
    Pytorch-实现ResNet-18并在Cifar-10数据集上进行验证
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/14986379.html
Copyright © 2011-2022 走看看