मान लीजिए कि एक नींबू पानी स्टैंड है, प्रत्येक नींबू पानी की कीमत $ 5 है। अब ग्राहक स्टोर से खरीदारी करने और एक-एक करके ऑर्डर करने के लिए कतार में खड़े हैं।
प्रत्येक ग्राहक केवल एक नींबू पानी खरीद सकता है और $ 5, $ 10 या $ 20 बिल के साथ भुगतान कर सकता है। हमें प्रत्येक ग्राहक को सही परिवर्तन प्रदान करना होगा, ताकि शुद्ध लेनदेन यह हो कि ग्राहक $ 5 का भुगतान करे। और सबसे पहले, हमारे हाथ में कोई बदलाव नहीं है।
हमें यह जांचना होगा कि क्या हम प्रत्येक ग्राहक को सही परिवर्तन प्रदान कर सकते हैं।
इसलिए, यदि इनपुट [5,5,5,10,20] जैसा है, तो आउटपुट ट्रू होगा, जैसा कि पहले 3 ग्राहकों से, हम क्रम में तीन $5 बिल प्राप्त कर सकते हैं। चौथे से, हम $10 का बिल जमा करते हैं और $5 वापस देते हैं। उसके बाद पांचवें ग्राहक से, हम $10 का बिल और एक $5 का बिल देते हैं। जैसा कि सभी ग्राहकों को सही परिवर्तन मिला, हम सही आउटपुट देते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n5:=0, n10:=0, n20:=0
- बिल में प्रत्येक i के लिए, करें
- यदि मैं 5 के समान हूं, तो
- n5 :=n5 + 1
- अन्यथा जब मैं 10 के समान हो, तो
- n10:=n10 + 1
- अन्यथा n20 :=n20 + 1
- यदि बिलों का आकार> 0 और n5 0 के समान है, तो
- झूठी वापसी
- यदि मैं 20 और n10> 0 और n5> 0 के समान है, तो
- n10:=n10 - 1
- n5 :=n5 - 1
- अन्यथा जब मैं 20 के समान हो और n10 0 और n5 <3 के समान हो, तो
- झूठी वापसी
- अन्यथा जब मैं 20 के समान हो और n10 0 के समान हो और n5>=3, तब
- n5 :=n5 -3
- यदि मैं 10 और n5> 0 के समान है, तो
- n5 :=n5 - 1
- अन्यथा जब मैं 10 के समान हो और n5 0 के समान हो, तो
- झूठी वापसी
- यदि मैं 5 के समान हूं, तो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def lemonadeChange(self, bills): n5 = 0 n10 = 0 n20 = 0 for i in bills: if i == 5: n5 += 1 elif i == 10: n10 += 1 else: n20 += 1 if len(bills) > 0 and n5 == 0: return(False) if i == 20 and n10 > 0 and n5 > 0: n10 -= 1 n5 -= 1 elif i == 20 and n10 == 0 and n5 < 3: return(False) elif i == 20 and n10 == 0 and n5 >= 3: n5 = n5 -3 if i == 10 and n5 > 0: n5 -= 1 elif i == 10 and n5 == 0: return (False) return(True) ob = Solution() print(ob.lemonadeChange([5,5,5,10,20]))
इनपुट
[5,5,5,10,20]
आउटपुट
True