4.3 Design Problems (Custom Stack/Queue)
চিনবেন কীভাবে
"implement a stack/queue with X" — O(1)-এ বাড়তি তথ্য (min/max) চাই, বা এক structure দিয়ে আরেকটা simulate
Demo · approach · কোড — আগে নিজে চেষ্টা, আটকালে খুলুন
Demo: Min Stack — LC 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)