• 剑指offer二十之包含min函数的栈


    一、题目

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

    二、思路

    用一个栈dataStack保存数据,用另外一个栈minStack保存依次入栈最小的数。每次元素存入minStack的时候,如果该元素比minStack的栈顶元素小,则存入minStack,否则用minStack栈顶元素代替该元素存入minStack。

    比如dataStack中依次入栈的元素为:5,  4,  3,  8,  10,  11,  12,  1

    则minStack依次入栈的元素为:      5,  4,  3,  3,   3,   3,    3,    1

    三、代码

    import java.util.Stack;
    
    /*
    用一个栈dataStack保存数据,用另外一个栈minStack保存依次入栈最小的数。每次元素存入minStack的时候,如果该元素比minStack的栈顶元素小,则存入minStack,否则用minStack栈顶元素代替该元素存入minStack。
    比如dataStack中依次入栈的元素为:5,4,3,8,10,11,12,1
    则minStack依次入栈的元素为:5,4,3,3,3,3,3,1
     */
    public class Solution {
        Stack<Integer> dataStack = new Stack<Integer>(); //保存元素
        Stack<Integer> minStack = new Stack<Integer>(); //保存最小元素
    
        public void push(int value) {
            dataStack.push(value); //元素入dataStack
            if (minStack.isEmpty() || value < minStack.peek()) { //如果minStack为空,或者当前存入的元素小于minStack的栈顶元素,则把该元素存入minStack
                minStack.push(value);
            } else {
                minStack.push(minStack.peek());//如果minStack不为空且当前存入的元素大于或者等于minStack的栈顶元素,则把minStack栈顶元素存入minStack
            }
        }
    
        public void pop() {
            dataStack.pop();
            minStack.pop();
        }
    
        public int top() {
            return dataStack.peek();
        }
    
        public int min() {
            return minStack.peek();
        }
    }
    View Code

    --------------------------------------------------------------------------------

    参考链接:https://www.nowcoder.com/questionTerminal/4c776177d2c04c2494f2555c9fcc1e49

  • 相关阅读:
    FLASH开发[00]
    slickedit使用小技巧
    网络编程[34]
    网络编程[39]
    网络编程[41]
    网络编程[37]
    网络编程[32]
    网络编程[35]
    Apache安装和配置
    网络编程[40]
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7622258.html
Copyright © 2020-2023  润新知