मान लीजिए कि हमारे पास nums नामक एक सरणी है, इस सरणी में तत्वों की संख्या भी है, और एक और मान k है। हमें अंकों को ठीक n/2 युग्मों में इस प्रकार विभाजित करना है कि प्रत्येक युग्म का योग k से विभाज्य हो। अगर हम ऐसा कर सकते हैं तो सही लौटें, अन्यथा गलत।
इसलिए, यदि इनपुट अंकों की तरह है =[9,5,3,4,7,10,20,8] k =3, तो आउटपुट सही होगा क्योंकि हम (9,3), (5) जैसे जोड़े बना सकते हैं ,7), (4,20), (8,10), सभी जोड़ियों का योग 3 से विभाज्य है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
डीपी:=एक नई सूची
-
गिनती:=0
-
अंकों में प्रत्येक x के लिए, करें
-
टी:=के - (एक्स मॉड के)
-
यदि t, k के समान है, तो
-
गिनती :=गिनती + 1
-
-
अन्यथा,
-
dp के अंत में t डालें
-
-
-
यदि काउंट मोड 2, 0 के समान नहीं है, तो
-
झूठी वापसी
-
-
सूची डीपी सॉर्ट करें
-
कम :=0
-
उच्च:=डीपी का आकार - 1
-
जबकि कम <उच्च, करें
-
अगर dp[low] + dp[high] k के समान नहीं है, तो
-
झूठी वापसी
-
-
कम :=कम + 1
-
उच्च :=उच्च - 1
-
-
सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(nums, k): dp=[] count=0 for x in nums: t=k-(x % k) if t == k: count+=1 else: dp.append(t) if count % 2 != 0: return False dp.sort() low = 0 high = len(dp)-1 while low < high: if dp[low] + dp[high] != k: return False low += 1 high -= 1 return True nums = [9,5,3,4,7,10,20,8] k = 3 print(solve(nums, k))
इनपुट
[9,5,3,4,7,10,20,8], 3
आउटपुट
True