मान लीजिए कि हमारे पास nums नामक एक सरणी है और दूसरा मान k है। एक ऑपरेशन में, हम उन दो तत्वों का चयन कर सकते हैं, जिनका योग k के बराबर है और उन्हें सरणी से हटा दें। हमें ऐरे पर अधिकतम संख्या में ऑपरेशन करने होंगे जो हम कर सकते हैं।
इसलिए, यदि इनपुट nums =[8,3,6,1,5] k =9 की तरह है, तो आउटपुट 2 होगा क्योंकि हम [3,6] को हटा सकते हैं जिसका योग 9 है, फिर [8,1] को हटा दें ] जिसका योग भी 9 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- काउंटर:=अंकों में मौजूद प्रत्येक आइटम की आवृत्ति रखने वाला नक्शा
- res :=0
- काउंटर में प्रत्येक अंक के लिए, करें
- यदि काउंटर [k-num] शून्य नहीं है, तो
- यदि संख्या k - संख्या के समान नहीं है, तो
- res :=res + न्यूनतम काउंटर [संख्या] और काउंटर [k-num]
- काउंटर[k-num] :=0
- काउंटर[संख्या] :=0
- अन्यथा,
- res :=res + भागफल (काउंटर[संख्या] / 2)
- यदि संख्या k - संख्या के समान नहीं है, तो
- यदि काउंटर [k-num] शून्य नहीं है, तो
- रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import Counter def solve(nums, k): counter = Counter(nums) res = 0 for num in counter: if counter.get(k-num, 0): if num != k - num: res += min(counter[num], counter[k-num]) counter[k-num] = 0 counter[num] = 0 else: res += int(counter[num] / 2) return res nums = [8,3,6,1,5] k = 9 print(solve(nums, k))
इनपुट
[8,3,6,1,5], 9
आउटपुट
2