设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
/**
*/
function MinStack() {
let items = []
let min
// 每次push数据的时候,都要进行和最小值进行比较,拿到最小值
this.push = function(item) {
min = min && item > min ? min : item
return items.push(item)
}
// 每次移除数据时,都要和最小值进行比较,如果不大于最小值,则返回剩余数据的最小值。
this.pop = function(){
let item = items.pop()
min = item > min ? min : Math.min(...items)
return item
}
this.getMin = function() {
console.log(min)
return min
}
this.top = function(){
console.log(items[items.length - 1 ] )
return items[items.length - 1 ]
}
}
let minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // 返回 -3.
console.log(minStack.pop());
minStack.top(); // 返回 0.
minStack.getMin(); // 返回 -2.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。