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

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

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

औपचारिक रूप से, हम सरणी को विभाजित कर सकते हैं यदि हम इंडेक्स i+1

तो अगर इनपुट [0,2,1,-6,6,-7,9,1,2,0,1] है, तो आउटपुट सही होगा। तीन सरणियाँ [0,2,1], [-6,6,-7,9,1] और [2,0,1]

होंगी

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

  • अस्थायी:=सभी तत्वों का योग, और आवश्यक_योग:=अस्थायी / 3
  • समुच्चय योग को बाएँ से दाएँ संग्रहीत करने के लिए sum_left सेट करें
  • समुच्चय योग को दाएं से बाएं स्टोर करने के लिए sum_right सेट करें
  • सूचकांक1:=0 और अनुक्रमणिका2:=सरणी की लंबाई - 1
  • जबकि अनुक्रमणिका1 <अनुक्रमणिका2:
    • जबकि अनुक्रमणिका1 <अनुक्रमणिका2 और sum_left[index1] !=आवश्यक_योग
      • सूचकांक1 :=अनुक्रमणिका1 + 1
    • जबकि अनुक्रमणिका2> अनुक्रमणिका1 और sum_right[index2] !=आवश्यक_योग
      • सूचकांक2 :=अनुक्रमणिका2 - 1
    • यदि अनुक्रमणिका1 <अनुक्रमणिका2 और अनुक्रमणिका1 !=अनुक्रमणिका2, तो सत्य लौटाएं, अन्यथा असत्य

उदाहरण

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

class Solution(object):
   def canThreePartsEqualSum(self, A):
      temp = sum(A)
      if (temp%3 != 0):
         return 0
      sum_left=[0 for i in range(len(A))]
      sum_left[0] = A[0]
      sum_right=[0 for i in range(len(A))]
      sum_right[-1] = A[-1]
      for i in range(1,len(A)):
         sum_left[i] = A[i]+sum_left[i-1]
      for i in range(len(A)-2,-1,-1):
         sum_right[i] = A[i]+sum_right[i+1]
      #print(sum_left,sum_right)
      required_sum = temp/3
      index1 = 0
      index2 = len(A)-1
      while index1 < index2:
      while index1 <index2 and sum_left[index1]!=required_sum:
         index1+=1
      while index2>index1 and sum_right[index2]!=required_sum:
         index2-=1
      return index1<index2 and index1 != index2
ob1 = Solution()
print(ob1.canThreePartsEqualSum([0,2,2,-6,6,-7,9,2,2,0,2]))

इनपुट

[0,2,1,-6,6,-7,9,1,2,0,1]

आउटपुट

true

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

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी ए है, हमें सरणी को अधिकतम के (सन्निहित) लंबाई के उप-सरणी में विभाजित करना होगा। विभाजन के बाद, प्रत्येक उप-सरणी का मान उस उप-सरणी का अधिकतम मान बनने के लिए बदल जाता है। हमें विभाजन के बाद दिए गए सरणी का सबसे बड़ा योग ज्ञात करना है। तो अगर इनपुट [1, 15, 7, 9, 2

  1. पायथन में सरणी विभाजन I

    मान लीजिए कि हमारे पास 2n पूर्णांकों की एक सरणी है, हमें इन पूर्णांकों को पूर्णांक के n जोड़े में समूहित करना है, जैसे (a1, b1), (a2, b2), ..., (a, bn) जो न्यूनतम योग बनाता है (ai, bi) जितना संभव हो 1 से n तक के सभी i के लिए। तो अगर इनपुट [1, 4, 3, 2] है, तो आउटपुट 4 होगा। तो n 2 है। और जोड़े का अधि

  1. पाइथन के साथ किसी सूची या सरणी में टेक्स्ट फ़ाइल को कैसे पढ़ा जाए?

    f = open('my_file.txt', 'r+') my_file_data = f.read() f.close() उपरोक्त कोड my_file.txt को रीड मोड में खोलता है और फिर my_file.txt से पढ़े गए डेटा को my_file_data में स्टोर करता है और फ़ाइल को बंद कर देता है। रीड फंक्शन पूरी फाइल को एक बार में पढ़ता है। आप फ़ाइल को पंक्ति दर पंक्ति