মূল কনটেন্টে যান
🧩
লোকাল DSA
প্যাটার্নটপিক 4 · Stacks & Queues

4.3 Design Problems (Custom Stack/Queue)

চিনবেন কীভাবে
"implement a stack/queue with X" — O(1)-এ বাড়তি তথ্য (min/max) চাই, বা এক structure দিয়ে আরেকটা simulate
Demo · approach · কোড — আগে নিজে চেষ্টা, আটকালে খুলুন

Demo: Min StackLC 155 (Medium — Amazon/Google High)

Statement (Demo): MinStack class design করুন — push(val), pop(), top(), getMin() সবগুলো O(1) time-এ কাজ করবে। getMin() সবসময় বর্তমান stack-এর minimum value return করবে। উদাহরণ: push(-2), push(0), push(-3)getMin()=-3, pop(), top()=0, getMin()=-2 | ⚡ max 3×10⁴ calls

Approach: প্রতিটা এলিমেন্টের সাথে "এই পর্যন্ত min" জোড়া করে রাখুন — pop করলে min-ও আপনা-আপনি আগের অবস্থায় ফিরে যায়।

class MinStack {
  constructor() {
    this.stack = [];
  } // [value, minSoFar] জোড়া
  push(val) {
    const min = this.stack.length ? Math.min(val, this.getMin()) : val;
    this.stack.push([val, min]);
  }
  pop() {
    this.stack.pop();
  }
  top() {
    return this.stack[this.stack.length - 1][0];
  }
  getMin() {
    return this.stack[this.stack.length - 1][1];
  }
}

Complexity: সব operation O(1), Space O(n)

প্রবলেম

  • Implement Queue using Stacksplan · দিন ০২৪LC 232
    (দুই stack: in + out, amortized O(1))

    Statement: দুটো stack ব্যবহার করে FIFO queue implement করুন। push(x), pop(), peek(), empty() সব support করতে হবে।
    উদাহরণ: push(1), push(2), peek()=1, pop()=1, empty()=false | ⚡ max 100 calls, 1 ≤ x ≤ 9

    নোট · ফাঁকা
আরও দেখুন
LRU/LFU Cache → দেখুন 10.3 (Design)