最小栈
问题
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
答案
js
var MinStack = function() {
this.stack=[[0,Infinity]];
};
/**
* @param {number} val
* @return {void}
*/
MinStack.prototype.push = function(val) {
this.stack.push([val,Math.min(this.getMin(),val)]);
};
/**
* @return {void}
*/
MinStack.prototype.pop = function() {
this.stack.pop();
};
/**
* @return {number}
*/
MinStack.prototype.top = function() {
return this.stack.at(-1)[0];
};
/**
* @return {number}
*/
MinStack.prototype.getMin = function() {
return this.stack.at(-1)[1];
};
扩展
结构定义,一个数组里每个都存成一个数组,[val,min]的形式,一开始存一个[0,Infinity]