您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    被大厂面试官问烂的算法图解:你还不明白如何找出栈中的最小值?(2)
    时间:2020-10-16 21:02 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

                min = data[--top]; // 拿到原最小值,并(将原最小值)出栈 

            } 

            --top; // 出栈 

        } 

     

        // 查找栈顶元素 

        public int top() { 

            return data[top]; 

        } 

     

        // 查询最小值 

        public int min() { 

            return min

        } 

    上述代码在 LeetCode 的执行结果如下:

    被大厂面试官问烂的算法图解:你还不明白如何找出栈中的最小值?

    可以看出功用还是很高的,超越了 99.92% 的用户,内存消耗也不大。它的中心代码在 push 办法内,先将原最小值和最新最小值相继入栈,在 pop 出栈时判别出栈元素能否为最小值,假设是最小值则将以后最小值指向栈顶元素并将栈顶元素出栈,这样就失掉了下一个新的最小值了。

    实现代码2

    假设我们不想运用数组的自定义栈来完成,还可以运用 Java 中自带的栈 Stack 来完成此功用,代码如下:

    class MinStack { 

        private Stack<Integer> stack = new Stack<>(); 

        private int min = Integer.MAX_VALUE; 

     

        public MinStack() { } 

     

        // 入栈(添加元素) 

        public void push(int x) { 

            if (x <= min) { 

                // 遇到了更小的值,记载原最小值(入栈) 

                stack.push(min); 

                min = x; 

            } 

            stack.push(x); 

        } 

     

        // 出栈(移除栈顶元素) 

        public void pop() { 

            if (stack.pop() == min) { 

                min = stack.pop(); // 取出原最小值 

            } 

        } 

     

        // 查找栈顶元素 

        public int top() { 

            return stack.peek(); 

        } 

     

        // 查询最小值 

        public int min() { 

            return min

        } 

    (责任编辑:admin)