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

Python में सरणी को समान योग वाले k उप-सरणियों में विभाजित करने की संभावना की जांच कैसे करें?

मान लीजिए हमारे पास nums नामक संख्याओं की एक सरणी है, और एक अन्य मान K भी है। हमें यह जांचना है कि क्या हम सरणी nums को K सन्निकट उप-सरणियों में विभाजित कर सकते हैं ताकि प्रत्येक उप-सरणी का तत्व योग समान हो।

तो, यदि इनपुट nums = [2, 5, 3, 4, 7], k = 3 है, तो आउटपुट True होगा क्योंकि हम तीन विभाजन बना सकते हैं जैसे [(2, 5), (3, 4), (7)] जिनका योग 7 है।

हल करने के चरण

  • n := nums का आकार
  • cumul_sum := nums में सभी तत्वों का संचयी योग
  • total_sum := cumul_sum[n - 1]
  • यदि total_sum, k से विभाज्य नहीं है, तो:
    • False लौटाएं
  • count := 0, pos := -1
  • रेंज 0 से n - 1 तक के लिए i, करें:
    • यदि pos, -1 के समान है, तो:
      • sub := 0
    • अन्यथा,
      • sub := cumul_sum[pos]
    • यदि cumul_sum[i] - sub, (total_sum / K) के समान है, तो:
      • pos := i
      • count := count + 1
    • अन्यथा जब cumul_sum[i] - cumul_sum[pos] > (total_sum / K), तो:
      • लूप से बाहर आएं
  • count, K के समान होने पर true लौटाएं अन्यथा false

उदाहरण

def solve(nums, k):
    n = len(nums)
    cumul_sum = [0 for i in range(n)]
    cumul_sum[0] = nums[0]
    for i in range(1, n):
        cumul_sum[i] = cumul_sum[i - 1] + nums[i]
    total_sum = cumul_sum[n - 1]
    if total_sum % k != 0:
        return False
    count = 0
    pos = -1
    for i in range(n):
        if pos == -1:
            sub = 0
        else:
            sub = cumul_sum[pos]
        if cumul_sum[i] - sub == total_sum / k:
            pos = i
            count += 1
        elif cumul_sum[i] - cumul_sum[pos] > total_sum / k:
            break
    return count == k

nums = [2, 5, 3, 4, 7]
k = 3
print(solve(nums, k))

इनपुट

[2, 5, 3, 4, 7], 3

आउटपुट

True
  1. Python में BST में दिए गए योग का ट्रिपलेट मौजूद है या नहीं जांचें Python में BST में दिए गए योग का ट्रिपलेट मौजूद है या नहीं जांचें

    मान लीजिए, हमें एक बाइनरी सर्च ट्री (BST) प्रदान किया गया है जिसमें पूर्णांक मान हैं, और एक संख्या total है। हमें यह पता लगाना है कि क्या प्रदान किए गए BST में तीन तत्वों का कोई समूह है जहां तीन तत्वों का योग आपूर्ति किए गए total मान के बराबर है।तो, यदि इनपुट इस तरह है:total = 12, तो आउटपुट True होग

  1. - Python में N के चार गुणनखोजें जिनका अधिकतम गुणनफल और योग N के बराबर हो - सेट-2

    मान लीजिए हमारे पास एक संख्या N है; हमें N के गुणनखोजने हैं और N के केवल चार गुणनखोजने का गुणनफल वापस करना है जैसे कि - चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं। तो, यदि इनपुट N = 60 की तरह है

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

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