zoukankan      html  css  js  c++  java
  • 栈和队列——包含min函数的栈

    实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返
    回栈中最小元素的操作。
    【要求】
    1. pop、 push、 getMin操作的时间复杂度都是O(1)。
    2. 设计的栈类型可以使用现成的栈结构。

    包含min函数的栈

    自已以前的思路就是,每次getMin()函数时,就准备一个备用栈,将数据栈中的元素依次出栈到备用栈中,期间记录下最小元素,然后将备用栈中的元素依次弹回到数据栈中。

    别人的思路,也是准备两个栈,一个数据栈dataStack,一个最小元素栈minStack,每次有元素入栈时,比较最小元素栈的栈顶peek,若小于,则将最小元素压入minStack中,否则将栈顶元素再次压入栈中

    出栈时,左右两边 一起出栈。

    package stackQueue;
    
    import java.util.Stack;
    
    /**
     * Created by Skye on 2018/4/5.
     */
    public class StackOfMin {
    
        private Stack<Integer> dataStack;
        private Stack<Integer> minStack;
    
        public StackOfMin() {
            this.dataStack = new Stack<>();
            this.minStack = new Stack<>();
        }
    
    
        public void push(int num){
            if(minStack.empty() || minStack.peek() > num){
                minStack.push(num);
            }else{
                int min = minStack.peek();
                minStack.push(min);
            }
            dataStack.push(num);
        }
    
        public int pop(){
            if(dataStack.empty()){
                throw new RuntimeException( "stack is empty" );
            }
            minStack.pop();
            return dataStack.pop();
        }
    
        public int getMin(){
            if(minStack.empty()){
                throw new RuntimeException("stack is empty");
            }
            return minStack.peek();
        }
    }
    

      

  • 相关阅读:
    cvBox2D和RotatedRect中返回的角度angle详解
    opencv源码阅读之——iOS的两条接口UIImageToMat()和MatToUIImage()
    3、设置jsp上的类容自动更新
    2、搭建一个简单的Web项目
    1、IDEA的常用快捷键
    2、jQuery的Ajax简单示例
    1、jQuery的使用入门
    13、Ajax的使用
    JSP和后台交互时的乱码问题
    12、Filter(拦截器)
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8723098.html
Copyright © 2011-2022 走看看