zoukankan      html  css  js  c++  java
  • 剑指offer-包含min函数的栈

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

    思路

    把每次的最小元素(之前的最小元素和新压入战的元素两者的较小值)都保存起来放到另外一个辅助栈里。

    如果每次都把最小元素压入辅助栈, 那么就能保证辅助栈的栈顶一直都是最小元素.当最小元素从数据栈内被弹出之后,同时弹出辅助栈的栈顶元素,此时辅助栈的新栈顶元素就是下一个最小值。

     Stack<Integer> dataStack = new Stack<Integer>();  // 数据栈
        Stack<Integer> minStack = new Stack<Integer>();   // 辅助栈
        
        public void push(int node) {
            dataStack.push(node);
            if(minStack.isEmpty() || minStack.peek() > node ) {
                minStack.push(node);
            } else {
                minStack.push(minStack.peek());
            }  
        }
        
        public void pop() {
            if(!dataStack.isEmpty() && !minStack.isEmpty()) {
                dataStack.pop();
                minStack.pop();
            }
        }
    
        public int min() {
            int min = 0;
            if(!dataStack.isEmpty() && !minStack.isEmpty()) {
                min = minStack.peek();
            }
            return min;
        }
  • 相关阅读:
    《代码大全》阅读心得一
    vi列模式
    以指定的概率/机会获取元素
    自用VIM配置
    优雅的Javascript
    关于遮罩层
    CSS3属性BorderRadius详解[圆角]
    CSS3属性boxshadow详解[盒子阴影]
    CSS3文字特效
    Css3 Animation详解
  • 原文地址:https://www.cnblogs.com/zywu/p/5775098.html
Copyright © 2011-2022 走看看