मान लीजिए हमारे पास एक ऐरे nums है जिसमें केवल 1 और 2 मान होते हैं। हमें यह जांचना है कि क्या ऐरे को दो अलग-अलग भागों में विभाजित किया जा सकता है ताकि प्रत्येक भाग के तत्वों का योग समान हो।
उदाहरण के लिए, यदि इनपुट nums = [1, 1, 2, 2, 2] है, तो आउटपुट True होगा क्योंकि हम इस ऐरे को [1, 1, 2] और [2, 2] में विभाजित कर सकते हैं जिनमें से प्रत्येक का योग 4 है।
समाधान दृष्टिकोण
कुल योग सम होना चाहिए। फिर हम जांचते हैं कि क्या आधा योग प्राप्त करना संभव है दिए गए 1s और 2s की संख्या से।
एल्गोरिदम चरण:
total = sum(nums)औरone_count = nums.count(1)की गणना करें- यदि
totalविषम है, तो False लौटाएं (विषम योग को दो बराबर भागों में नहीं बांटा जा सकता) - यदि
(total // 2) % 2 == 0(आधा योग सम है), तो True लौटाएं (केवल 2s से बनाया जा सकता है) - यदि
one_count > 0, तो True लौटाएं (1s का उपयोग करके विषम आधे योग को समायोजित कर सकते हैं) - अन्यथा False लौटाएं
पायथन कार्यान्वयन
def solve(nums):
total = sum(nums)
one_count = nums.count(1)
if total % 2:
return False
if (total // 2) % 2 == 0:
return True
if one_count > 0:
return True
return False
nums = [1, 1, 2, 2, 2]
print(solve(nums)) # True
इनपुट
[1, 1, 2, 2, 2]
आउटपुट
True
व्याख्या:
कुल योग = 8 (सम), आधा योग = 4 (सम)। इसलिए केवल 2s से ही 4 बनाया जा सकता है (2+2)। 1s की उपलब्धता अतिरिक्त लचीलापन देती है।