Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में जांचें कि 1s और 2s का ऐरे दो बराबर योग वाले भागों में विभाजित हो सकता है या नहीं

मान लीजिए हमारे पास एक ऐरे nums है जिसमें केवल 1 और 2 मान होते हैं। हमें यह जांचना है कि क्या ऐरे को दो अलग-अलग भागों में विभाजित किया जा सकता है ताकि प्रत्येक भाग के तत्वों का योग समान हो।

उदाहरण के लिए, यदि इनपुट nums = [1, 1, 2, 2, 2] है, तो आउटपुट True होगा क्योंकि हम इस ऐरे को [1, 1, 2] और [2, 2] में विभाजित कर सकते हैं जिनमें से प्रत्येक का योग 4 है।

समाधान दृष्टिकोण

कुल योग सम होना चाहिए। फिर हम जांचते हैं कि क्या आधा योग प्राप्त करना संभव है दिए गए 1s और 2s की संख्या से।

एल्गोरिदम चरण:

  1. total = sum(nums) और one_count = nums.count(1) की गणना करें
  2. यदि total विषम है, तो False लौटाएं (विषम योग को दो बराबर भागों में नहीं बांटा जा सकता)
  3. यदि (total // 2) % 2 == 0 (आधा योग सम है), तो True लौटाएं (केवल 2s से बनाया जा सकता है)
  4. यदि one_count > 0, तो True लौटाएं (1s का उपयोग करके विषम आधे योग को समायोजित कर सकते हैं)
  5. अन्यथा 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 की उपलब्धता अतिरिक्त लचीलापन देती है।

  1. - पायथन में जांचें कि क्या हम दो पार्टीशन का ग्रुप बना सकते हैं जिनका योग समान हो

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें जांचना है कि क्या हम nums को दो ग्रुप में पार्टीशन कर सकते हैं जहां दोनों ग्रुप में तत्वों का योग समान हो। उदाहरण के लिए, यदि इनपुट nums = [2, 3, 6, 5] है, तो आउटपुट True होगा, क्योंकि हम [2, 6] और [3, 5] जैसे ग्रुप बना सकते हैं। इसे हल करन

  1. - पायथन में उन योगों को खोजें जिनके लिए ऐरे को समान योग के उप-सरणियों में विभाजित किया जा सकता है

    मान लीजिए हमारे पास पूर्णांकों का एक ऐरे A है। हमें sum के सभी मान ढूंढने हैं ताकि किसी मान sum[i] के लिए ऐरे को उप-सरणियों में विभाजित किया जा सके जिनमें से प्रत्येक का योग sum[i] हो। यदि हम ऐरे को समान योग की उप-सरणियों में विभाजित नहीं कर सकते, तो -1 लौटाएं। इसलिए, यदि इनपुट A = [2, 4, 2, 2, 2,

  1. - पायथन में ऐरे को तीन बराबर सम भागों में विभाजित करना

    मान लीजिए हमारे पास इंटीजर्स का एक ऐरे A है, हमारा आउटपुट true होगा यदि और केवल यदि हम ऐरे को तीन नॉन-खाली भागों में विभाजित कर सकते हैं जिनका योग बराबर हो। औपचारिक रूप से, हम ऐरे को विभाजित कर सकते हैं यदि हम इंडेक्स i+1 < j ढूंढ सकते हैं जैसे कि (A[0] + A[1] + ... + A[i], A[i+1] + A[i+2] + ... +