मान लीजिए हमारे पास nums नामक एक सरणी है, इसमें सम संख्या में तत्व हैं, और एक मान k है। हमें nums को ठीक n/2 जोड़ों में विभाजित करना है जैसे कि प्रत्येक जोड़ का योग k से विभाज्य हो। यदि हम ऐसा कर सकते हैं तो true वापस करें, अन्यथा false।
उदाहरण के लिए, यदि इनपुट nums = [9,5,3,4,7,10,20,8] k = 3 है, तो आउटपुट True होगा क्योंकि हम (9,3), (5,7), (4,20), (8,10) जैसे जोड़े बना सकते हैं, सभी जोड़ों का योग 3 से विभाज्य है।
हल करने के चरण
dp := एक नई सूची
count := 0
nums में प्रत्येक x के लिए, करें
t := k - (x mod k)
यदि t, k के समान है, तो
count := count + 1
अन्यथा,
t को dp के अंत में डालें
यदि count mod 2, 0 के समान नहीं है, तो
False वापस करें
सूची dp को सॉर्ट करें
low := 0
high := dp का आकार - 1
जब तक low < high, करें
यदि dp[low] + dp[high], k के समान नहीं है, तो
False वापस करें
low := low + 1
high := high - 1
True वापस करें
उदाहरण
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