zoukankan      html  css  js  c++  java
  • 剑指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

  • 相关阅读:
    前端各类网站
    冒泡排序(Bubble Sort)
    实现标签名右对齐,文本框左对齐
    html5新增标签
    Javascript--this--学习笔记
    Javascript原型学习笔记
    Javascript作用域学习笔记
    python嵌入到C++的一些理解
    python入门最佳实践
    ActionBar的一些理解
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7622258.html
Copyright © 2011-2022 走看看