yanggengzhen123 / leetcode-group

力扣小组
0 stars 0 forks source link

2022.03.16-第45题-155. 最小栈 #47

Open icodeish opened 2 years ago

icodeish commented 2 years ago

https://leetcode-cn.com/problems/min-stack/ 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。  

示例 1:

输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]]

输出: [null,null,null,null,-3,null,0,-2]

解释: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.

icodeish commented 2 years ago
var MinStack = function () {
    this.stack = []
    this.min_stack = [Infinity]
};

/** 
 * @param {number} val
 * @return {void}
 */
MinStack.prototype.push = function (val) {
    this.stack.push(val)
    this.min_stack.push(Math.min(this.min_stack[this.min_stack.length - 1], val))
};

/**
 * @return {void}
 */
MinStack.prototype.pop = function () {
    this.stack.pop()
    this.min_stack.pop()
};

/**
 * @return {number}
 */
MinStack.prototype.top = function () {
    return this.stack[this.stack.length - 1]
};

MinStack.prototype.getMin = function () {
    return this.min_stack[this.min_stack.length - 1]
};
BambooSword commented 2 years ago
class MinStack {
    data: number[]
    minStack: number[]
    len: number
    constructor() {
        this.data = [];
        this.minStack = []
        this.len = 0;
    }

    push(val: number): void {
        this.data.push(val);
        this.minStack.push(this.len ===0 ||  val < this.minStack[this.len -1] ? val : this.minStack[this.len -1]);
        this.len ++
    }

    pop(): void {
        this.data.pop()
        this.minStack.pop()
        this.len --;
    }

    top(): number {
        return this.data[this.len -1]
    }

    getMin(): number {

        return this.minStack[this.minStack.length -1];
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * var obj = new MinStack()
 * obj.push(val)
 * obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.getMin()
 */
yanggengzhen123 commented 2 years ago
class MinStack {
    stack = []
    min_stack = [Infinity];
    constructor() {

    }

    push(val: number): void {
        this.stack.push(val)
        this.min_stack.push(Math.min(val,this.min_stack[this.min_stack.length - 1]))
    }

    pop(): void {
        this.stack.pop()
        this.min_stack.pop()
    }

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

    getMin(): number {
        return this.min_stack[this.min_stack.length - 1]
    }
}