이 문제에서 구현하고자 하는 MinStack
은 필요할 때 요소 내 최솟값을 조회하고자 하는 커스텀 클래스이다.
stack
을 구현하며 min
배열을 통해 현재 최솟값을 기록할 배열을 추가함push
될 때 현재 최솟값을 같이 계속 누적함. 즉 현재 요소의 인덱스에서의 최솟값을 언제든 O(1)의 시간으로 알 수 있음class MinStack {
private min
private stack
constructor() {
this.min = []
this.stack = []
}
push(val: number): void {
let curMin = this.min.at(-1) ?? Number.MAX_SAFE_INTEGER
if(val < curMin) curMin = val
this.min.push(curMin)
this.stack.push(val)
}
pop(): void {
this.min.pop()
this.stack.pop()
}
top(): number {
return this.stack.at(-1)
}
getMin(): number {
return this.min.at(-1)
}
}