मान लीजिए हमारे पास बेसबॉल गेम पॉइंट रिकॉर्डर है। हमारे पास तारों की एक सूची है; प्रत्येक स्ट्रिंग निम्नलिखित 4 प्रकारों में से एक हो सकती है -
- पूर्णांक (एक राउंड का स्कोर) - इस राउंड में प्राप्त अंकों की संख्या को दर्शाता है।
- "+" (एक राउंड का स्कोर) - इंगित करता है कि इस राउंड में हमें जो अंक मिले हैं, वे पिछले दो मान्य राउंड के अंकों का योग हैं।
- "D" (एक राउंड का स्कोर ) - यह दर्शाता है कि इस राउंड में हमें जो अंक मिले हैं, वे पिछले मान्य राउंड के अंकों के दोगुने डेटा हैं।
- "C" (एक ऑपरेशन, जो एक राउंड का स्कोर नहीं है) - इंगित करता है कि पिछले मान्य राउंड के अंक जो हमें मिले वे अमान्य थे और उन्हें हटा दिया जाना चाहिए।
ध्यान दें कि प्रत्येक दौर का संचालन स्थायी होता है और इससे पहले और बाद के दौर पर असर पड़ सकता है। हमें उन सभी अंकों का योग ज्ञात करना है जो हम सभी राउंड में प्राप्त कर सकते हैं।
इसलिए, यदि इनपुट ["5", "2", "सी", "डी", "+"] जैसा है, तो आउटपुट 30 होगा। यह वास्तव में के लिए है
- राउंड 1 - हमें 5 अंक मिल सकते हैं। योग है:5.
- राउंड 2 - हमें 2 अंक मिल सकते हैं। योग है:7.
- ऑपरेशन 1 - राउंड 2 का डेटा अमान्य था। योग है:5.
- राउंड 3 - हमें 10 अंक मिल सकते हैं। योग है:15.
- चौथा चरण - हमें 5 + 10 =15 अंक मिल सकते हैं। योग है:30.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- स्टैक:=खाली सूची
- ऑप्स में प्रत्येक i के लिए, करते हैं
- अगर मैं "+" के समान हूं, तो
- पहला:=स्टैक [स्टैक का आकार -1], दूसरा:=स्टैक [स्टैक का आकार - 2]
- अंत में स्टैक में (प्रथम + सेकंड) डालें
- अन्यथा जब मैं "D" के समान हो, तो
- अंत में स्टैक में (स्टैक का अंतिम तत्व * 2) डालें
- अन्यथा जब मैं "सी" के समान होता हूं, तब
- स्टैक से अंतिम तत्व हटाएं
- अन्यथा,
- अंत में स्टैक में i डालें
- अगर मैं "+" के समान हूं, तो
- स्टैक के सभी तत्वों का रिटर्न योग
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def calPoints(self, ops): stack = [] for i in ops: if i == "+": first, second = stack[len(stack) - 1], stack[len(stack) - 2] stack.append(first + second) elif i == "D": stack.append(stack[-1] * 2) elif i == "C": stack.pop() else: stack.append(int(i)) return sum(stack) ob = Solution() print(ob.calPoints(["5","2","C","D","+"]))
इनपुट
["5","2","C","D","+"]
आउटपुट
30