मान लीजिए एक कॉन्फ्रेंस में दो प्रकार के लोग हैं। पहले प्रकार के लोग शाकाहारी लंच पसंद करते हैं, और दूसरे प्रकार के लोग मांसाहारी लंच पसंद करते हैं। लेकिन पैकेट की संख्या सीमित है, और यदि शाकाहारियों को मांसाहारी पैकेट मिलता है या इसके विपरीत; वे वह पैकेट नहीं लेंगे और अपने पसंदीदा पैकेट मिलने तक इंतजार करेंगे। तो, दो अलग-अलग प्रकार के पैकेट और लोगों को 0 शाकाहारी के लिए और 1 मांसाहारी के लिए दर्शाया गया है। अब हमें दो ऐरे दिए गए हैं, एक में n संख्या में फूड पैकेट हैं जिन्हें 0 और 1 से दर्शाया गया है और दूसरे ऐरे में m संख्या में लोगों की कतार है, और उनकी प्राथमिकताएं 0 और 1 से दर्शाई गई हैं। तो, यदि एक व्यक्ति को उनका पसंदीदा पैकेट नहीं मिलता, तो वे कतार के अंत में फिर से प्रवेश करते हैं और अपने पसंदीदा पैकेट की प्रतीक्षा करते हैं। तो, हमें बिना फूड पैकेट वाले लोगों की संख्या ढूंढनी है ताकि हम उनके पसंदीदा पैकेट की व्यवस्था कर सकें।
उदाहरण के लिए, यदि इनपुट है people = [0,1,1,0], packets = [0, 1, 0, 0], तो आउटपुट 1 होगा।
तो दो लोग मांसाहारी भोजन पसंद कर रहे हैं और केवल एक मांसाहारी पैकेट है। लाइन में पहला व्यक्ति जो मांसाहारी पसंद करता है वह उस पैकेट को प्राप्त करता है और दूसरा व्यक्ति प्रतीक्षा करता रहता है क्योंकि कोई अन्य मांसाहारी पैकेट नहीं है। तो, आउटपुट 1 है।
समाधान के चरण
temp_arr := [0, 0](0 और 0 मान वाली नई सूची)peopleमें प्रत्येकpersonके लिए:temp_arr[person] += 1
k := 0while k < len(packets):- यदि
temp_arr[packets[k]] > 0:temp_arr[packets[k]] -= 1
- अन्यथा:
- लूप से बाहर निकलें
k += 1
- यदि
len(packets) - kवापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(people, packets):
temp_arr = [0, 0]
for person in people:
temp_arr[person] += 1
k = 0
while k < len(packets):
if temp_arr[packets[k]] > 0:
temp_arr[packets[k]] -= 1
else:
break
k += 1
return len(packets) - k
print(solve([0,1,1,0], [0, 1, 0, 0]))
इनपुट
[0,1,1,0], [0, 1, 0, 0]
आउटपुट
1