यहां हम देखेंगे कि एक स्टैक कैसे बनाया जाता है, जो निरंतर समय में पुश, पॉप, टॉप और न्यूनतम तत्व को पुनः प्राप्त कर सकता है। तो फ़ंक्शन पुश (x), पॉप (), शीर्ष () और getMin ()
होंगेइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- न्यूनतम तत्व द्वारा स्टैक को इनफिनिटी के रूप में प्रारंभ करें
- पुश ऑपरेशन के लिए पुश(x)
- यदि x <मिनट है, तो न्यूनतम अपडेट करें:=x,
- x को स्टैक में पुश करें
- पॉप ऑपरेशन के लिए पॉप ()
- t:=शीर्ष तत्व
- टी को स्टैक से हटाएं
- यदि टी न्यूनतम है, तो न्यूनतम:=स्टैक का शीर्ष तत्व
- शीर्ष ऑपरेशन के लिए शीर्ष()
- बस शीर्ष तत्व लौटाएं
- गेटमिन ऑपरेशन के लिए getMin()
- न्यूनतम तत्व लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class MinStack(object): min=float('inf') def __init__(self): self.min=float('inf') self.stack = [] def push(self, x): if x<=self.min: self.stack.append(self.min) self.min = x self.stack.append(x) def pop(self): t = self.stack[-1] self.stack.pop() if self.min == t: self.min = self.stack[-1] self.stack.pop() def top(self): return self.stack[-1] def getMin(self): return self.min m = MinStack() m.push(-2) m.push(0) m.push(-3) print(m.getMin()) m.pop() print(m.top()) print(m.getMin())
इनपुट
m = MinStack() m.push(-2) m.push(0) m.push(-3) print(m.getMin()) m.pop() print(m.top()) print(m.getMin())
आउटपुट
-3 0 -2