मान लीजिए, हमें आकार n की एक सूची प्रदान की जाती है जिसमें धनात्मक पूर्णांक होते हैं और एक अन्य धनात्मक पूर्णांक m होता है। मान लीजिए, हम वर्तमान में एक लूप के अंदर हैं और प्रत्येक पुनरावृत्ति में, हम सरणी में कुछ तत्वों के मान को 1 से घटाते हैं और शेष तत्वों के मान को m से बढ़ाते हैं। हमें यह पता लगाना है कि क्या कुछ पुनरावृत्तियों के बाद सूची के आधे या अधिक तत्व शून्य में बदल जाते हैं। यदि संभव हो तो हम True लौटाते हैं, और यदि नहीं तो False।
इसलिए, यदि इनपुट input_list = [10, 18, 35, 5, 12], m = 4 है, तो आउटपुट True होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- frequency_list := आकार m+1 की एक नई सूची जिसे 0 से आरंभ किया गया है
- i := 0
- जब i < input_list का आकार हो, तब तक करें
- frequency_list[input_list[i] mod (m + 1)] := frequency_list[input_list[i] mod (m + 1)] + 1
- i := i + 1
- i := 0
- जब i <= m हो, तब तक करें
- यदि frequency_list[i] >= (input_list का आकार / 2), तो
- लूप से बाहर आएं
- i := i + 1
- यदि frequency_list[i] >= (input_list का आकार / 2), तो
- यदि i <= m, तो
- True लौटाएं
- अन्यथा,
- False लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(input_list, m):
frequency_list = [0] * (m + 1)
i = 0
while(i < len(input_list)):
frequency_list[(input_list[i] % (m + 1))] += 1
i += 1
i = 0
while(i <= m):
if(frequency_list[i] >= (len(input_list)/ 2)):
break
i += 1
if (i <= m):
return True
else:
return False
input_list = [10, 18, 35, 5, 12]
print(solve(input_list, 4))
इनपुट
[10, 18, 35, 5, 12], 4
आउटपुट
True