设计一个支持push、pop、top、在常数时间内检索最小元素的栈。
解法: 数组存储元素的值和小于当前栈中最小元素的值
- 时间复杂度 O(1),空间复杂度O(N)
- Runtime: 124 ms, faster than 49.61%
- Memory Usage: 47.6 MB, less than 22.40%
function last(arr) {
return arr[arr.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()
*/
class MinStack {
constructor () {
this.stack = []
}
push(x) {
if (this.stack.length === 0) {
this.stack.push([x, x]);
return;
}
const currentMin = last(this.stack)[1];
this.stack.push([x, Math.min(currentMin, x)])
}
pop() {
this.stack.pop()
}
top() {
return last(this.stack)[0]
}
getMin() {
return last(this.stack)[1]
}
}
网友评论