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

जांचें कि क्या पायथन में समान योग के साथ k उप-सरणी में विभाजन करना संभव है

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

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

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

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

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. जांचें कि क्या दिए गए योग के साथ एक ट्रिपल बीएसटी में पायथन में मौजूद है

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

  1. अधिकतम उत्पाद और एन के बराबर योग के साथ एन के चार कारक खोजें - पायथन में सेट -2

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

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

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी A है, तो हमारा आउटपुट सही होगा यदि और केवल तभी हम सरणी को तीन गैर-रिक्त भागों में विभाजित कर सकते हैं, जिनका योग बराबर है। औपचारिक रूप से, हम सरणी को विभाजित कर सकते हैं यदि हम इंडेक्स i+1