मान लीजिए हमारे पास notes नामक एक सरणी है जो क्यू में खड़े ग्राहकों के पास मौजूद विभिन्न रुपये के नोटों को दर्शाती है। वे सभी 50 रुपये के टिकट खरीदने के लिए इंतजार कर रहे हैं। यहां संभावित नोट्स [50, 100 और 200] हैं। हमें यह जांचना है कि क्या हम क्रम से लोगों को टिकट बेच सकते हैं या नहीं, शुरुआत में हमारे पास 0 रुपये हैं।
तो, यदि इनपुट notes = [50, 50, 100, 100] है, तो आउटपुट True होगा क्योंकि पहले दो के लिए हमें कुछ वापस करने की आवश्यकता नहीं है, लेकिन अब हमारे पास दो 50 रुपये के नोट हैं। तो अंतिम दो के लिए हम उन्हें 50 रुपये के नोट वापस कर सकते हैं और सभी टिकट क्रम से बेच सकते हैं।
हल करने के चरण
- freq := एक खाली मैप
- i := 0
- जब तक i < notes का आकार, तब तक:
- यदि notes[i], 50 के समान है, तो:
- freq[50] := freq[50] + 1
- अन्यथा जब notes[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
- यदि notes[i], 50 के समान है, तो:
- यदि i, notes के आकार के समान है, तो:
- True लौटाएं
- False लौटाएं
उदाहरण
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