मान लीजिए कि हमारे पास नोट नामक एक सरणी है जो ग्राहकों द्वारा कतार में रखे गए विभिन्न रुपये के नोटों का प्रतिनिधित्व करती है। वे सभी 50 रुपये के टिकट खरीदने की प्रतीक्षा कर रहे हैं। यहाँ संभावित नोट [50, 100 और 200] हैं। हमें यह जांचना होगा कि हम लोगों को टिकट बेच सकते हैं या नहीं, शुरू में हमारे हाथ में 0 रुपये हैं।
तो, अगर इनपुट नोट की तरह है =[50, 50, 100, 100], तो आउटपुट ट्रू होगा पहले दो के लिए हमें कुछ भी वापस करने की आवश्यकता नहीं है, लेकिन अब हमारे पास 50 रुपये के दो नोट हैं। तो पिछले दो के लिए हम उन्हें 50 रुपये के नोट वापस कर सकते हैं और सभी टिकटों को क्रम से बेच सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आवृत्ति:=एक खाली नक्शा
- मैं :=0
- जबकि मैं <नोटों का आकार, करता हूं
- यदि नोट[i] 50 के समान है, तो
- freq[50] :=freq[50] + 1
- अन्यथा जब नोट[i] 100 के समान हो, तो
- freq[100] :=freq[100] + 1
- अगर freq[50] 0 है, तो
- लूप से बाहर आएं
- freq[50] :=freq[50] - 1
- अन्यथा,
- अगर freq[100]> 0 और freq[50]> 0, तो
- freq[100] :=freq[100] - 1
- freq[50] :=freq[50] - 1
- अन्यथा जब freq[50]>=3, तब
- freq[50] :=freq[50] - 3
- अन्यथा,
- लूप से बाहर आएं
- अगर freq[100]> 0 और freq[50]> 0, तो
- i :=i + 1
- यदि नोट[i] 50 के समान है, तो
- यदि मैं नोटों के आकार के समान हूं, तो
- सही लौटें
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import defaultdict def solve(notes): freq = defaultdict(int) i = 0 while i < len(notes): if notes[i] == 50: freq[50] += 1 elif notes[i] == 100: freq[100] += 1 if freq[50] == 0: break freq[50] -= 1 else: if freq[100] > 0 and freq[50] > 0: freq[100] -= 1 freq[50] -= 1 elif freq[50] >= 3: freq[50] -= 3 else: break i += 1 if i == len(notes): return True return False notes = [50, 50, 100, 100] print(solve(notes))
इनपुट
[50, 50, 100, 100]
आउटपुट
True