设计一个反对 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.