chunbin1 / blog

git actions + dumijs 写的博客
https://chunbin1.github.io/blog/
0 stars 0 forks source link

151最小栈 #16

Open chunbin1 opened 2 years ago

chunbin1 commented 2 years ago

题目链接

chunbin1 commented 2 years ago

思路:使用另一个栈栈顶保持最小值

class MinStack{
    constructor(){
        this.stack = []
        this.minStack = []
    }

    push(val){
        this.stack.push(val)
        this._pushMinStash(val)
    }

    _pushMinStash(val){
        const length = this.minStack.length
        if(length>0){
            if(this.minStack[length-1]>=val){
                this.minStack.push(val)
            }
        }else{
            this.minStack.push(val)
        }
    }

    getMin(){
        return this.minStack[this.minStack.length-1]
    }

    top(){
        return this.stack[this.stack.length-1]
    }

    pop(){
        const val = this.stack.pop()
        this._popMinStash(val)
    }

    _popMinStash(val){
        if(this.minStack[this.minStack.length-1]===val){
            this.minStack.pop()
        }
    }
}