/** * So what special in this implementation? * This deals with Dynamic array without a size hence the implemetation uses * lot of space and I can sense that it can be further improved hence feel free * to open PR */ class TwoStacks { constructor(capacity) { this.data = []; this.capacity = capacity; this.top1 = -1; this.top2 = capacity; } push1(value) { if (this.top1 === -1 || this.top1 < this.top2 - 1) { this.top1 += 1; this.data[this.top1] = value; return; } throw new Error('Overflow'); } push2(value) { if (this.top2 <= this.capacity && this.top2 > this.top1) { this.data[this.top2] = value; this.top2 -= 1; return; } throw new Error('Overflow'); } pop1() {} pop2() {} } module.exports = TwoStacks; /** Test cases */ const s = new TwoStacks(3); s.push1('a'); console.log(s.data); s.push2('a2'); console.log(s.data); s.push1('b'); console.log(s.data); s.push2('b2'); console.log(s.data); s.push2('b3'); console.log(s.data);