// const capacity = Symbol(); // const stacks = Symbol(); export class StackOfPlates { #stacks: number[][] = []; #capacity: number; constructor(cap: number) { this.#capacity = cap; } push(val: number): void { if (this.#capacity <= 0) return; if ( this.#stacks.length === 0 || this.#stacks[this.#stacks.length - 1].length >= this.#capacity ) { this.#stacks.push([val]); } else { this.#stacks[this.#stacks.length - 1].push(val); } } pop(): number { if (this.#capacity <= 0) return -1; if (this.#stacks.length === 0) return -1; const lastStack = this.#stacks[this.#stacks.length - 1]; const val = lastStack.pop(); if (lastStack.length === 0) { this.#stacks.pop(); } return val ?? -1; } popAt(index: number): number { if (this.#capacity <= 0) return -1; if (this.#stacks.length === 0) return -1; const currentStack = this.#stacks[index]; if (!currentStack) { return -1; } const val = currentStack.pop(); if (currentStack.length === 0) { this.#stacks.splice(index, 1); } return val ?? -1; } } export default StackOfPlates;