zoukankan      html  css  js  c++  java
  • 最小栈 js实现

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

    • push(x) -- 将元素 x 推入栈中。
    • pop() -- 删除栈顶的元素。
    • top() -- 获取栈顶元素。
    • getMin() -- 检索栈中的最小元素。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin();   --> 返回 -3.
    minStack.pop();
    minStack.top();      --> 返回 0.
    minStack.getMin();   --> 返回 -2.
    js中可以用数组实现栈,定义两个数组,一个正常进行push和pop的操作,另一个保存当前栈中的最小值
    /**
     * initialize your data structure here.
     */
    var MinStack = function() {
        this.stack = [];
        this.min = [];
    };
    
    /** 
     * @param {number} x
     * @return {void}
     */
    MinStack.prototype.push = function(x) {
        this.stack.push(x);
        //判断x和min当前栈顶的数哪个小,如果x小则把x推入min的栈顶
        if(this.min.length==0 || this.min[this.min.length-1]>=x){
            this.min.push(x);
        }
    };
    
    /**
     * @return {void}
     */
    MinStack.prototype.pop = function() {
        //this.stack.pop();
        //判断stack中即将弹出的元素和min栈顶的元素是否相等,若相等,则要把min栈顶的元素弹出,防止找不到最小值
        if(this.stack[this.stack.length-1]==this.min[this.min.length-1]){
            this.min.pop();
        }
        this.stack.pop();
    };
    
    /**
     * @return {number}
     */
    MinStack.prototype.top = function() {
        return this.stack[this.stack.length-1];
    };
    
    /**
     * @return {number}
     */
    MinStack.prototype.getMin = function() {
        return this.min[this.min.length-1];//min栈顶保存当前栈中的最小值
    };
    
    /** 
     * Your MinStack object will be instantiated and called as such:
     * var obj = new MinStack()
     * obj.push(x)
     * obj.pop()
     * var param_3 = obj.top()
     * var param_4 = obj.getMin()
     */

  • 相关阅读:
    Array的应用
    事物的操作
    定义集合
    wxWidgets 在 Linux 下开发环境配置
    Emacs 中 GDB 的使用
    wxWidgets 在 Windows 下开发环境配置
    Ubuntu14.04终端主机名+用户名修改配色方案
    S5PV210之内外存学习
    Ubuntu14.04进行配置符号链接arm2009q3.tar.bz2
    Ubuntu14.041+VMware12.0NET方式网卡连接虚拟机联网问题解决方法
  • 原文地址:https://www.cnblogs.com/ZLDJ-15-516/p/11211566.html
Copyright © 2011-2022 走看看