Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

155. 最小栈 #55

Open
webVueBlog opened this issue Sep 5, 2022 · 0 comments
Open

155. 最小栈 #55

webVueBlog opened this issue Sep 5, 2022 · 0 comments

Comments

@webVueBlog
Copy link
Owner

155. 最小栈

Description

Difficulty: 中等

Related Topics: , 设计

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

实现 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.

提示:

  • -231 <= val <= 231 - 1
  • poptopgetMin 操作总是在 非空栈 上调用
  • pushpoptop, and getMin最多被调用 3 * 104 次

Solution

Language: JavaScript

// 辅助栈
// stack正常push,min_stack只会push需要入栈和栈顶中较小的元素
// stack正常pop,min_stack正常pop
// 返回stack栈顶元素
// 返回min_stack栈顶元素
var MinStack = function() {
    this.stack = []
    this.min_stack = [Infinity]
}

MinStack.prototype.push = function(x) {
    this.stack.push(x)
    this.min_stack.push(Math.min(x, this.min_stack[this.min_stack.length - 1]))
}

MinStack.prototype.pop = function() {
    this.stack.pop()
    this.min_stack.pop()
}

MinStack.prototype.top = function() {
    return this.stack[this.stack.length - 1]
}

MinStack.prototype.getMin = function() {
    return this.min_stack[this.min_stack.length - 1]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant