class MinStack {
constructor() { this.stack = []; this.mins = []; }
push(v) {
this.stack.push(v);
this.mins.push(Math.min(v, this.mins.at(-1) ?? v));
}
min() { return this.mins.at(-1); }
}Track minimums in O(1) by maintaining a parallel stack of running minimums.
Design a Stack that supports pushing, popping, and tracking the minimum element efficiently in O(1) time.
Challenge: Without auxiliary space, finding min is O(n). With a helper stack, it's O(1).
Operations:
push(x): Add elementpop(): Remove elementgetMin(): Return current minimum in O(1)class MinStack {
push(x: number): void {}
pop(): number | undefined {}
getMin(): number | undefined {}
}
const ms = new MinStack()
ms.push(3)
ms.push(1)
ms.push(2)
ms.getMin() // 1