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

पायथन में 'वैध' सरणी के अधिकतम मूल्य का पता लगाने का कार्यक्रम

मान लीजिए, हमारे पास n पूर्णांक 'अंक' की एक सरणी है। 'अंक' में प्रत्येक मान अपनी 'शक्ति' का प्रतिनिधित्व करता है। सरणी का मूल्यांकन 'वैध' किया जाएगा यदि सरणी की लंबाई दो से अधिक है और सरणी का पहला और अंतिम मान बराबर है। हमें सरणी से तत्वों को हटाकर सरणी को वैध बनाना है ताकि बाकी शर्त को पूरा कर सकें। आउटपुट के रूप में, हम सरणी के सभी पावर मानों को जोड़कर सरणी का अधिकतम संभव पावर मान लौटाते हैं।

इसलिए, यदि इनपुट nums =[3, 4, 5, 3, 4] जैसा है, तो आउटपुट 16 होगा।

यदि हम पहले मान 3 को सरणी अंकों से हटाते हैं, तो यह [4, 5, 3, 4] हो जाता है। यह एक मान्य सरणी है और शक्तियों का योग 4 + 5 + 3 + 4 =16 है। यह दिए गए इनपुट से किसी भी मान्य सरणी के लिए अधिकतम संभव योग है।

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

  • तालिका :=एक नया नक्शा

  • उपसर्ग :=मान 0 के साथ आरंभ की गई एक नई सूची

  • नकारात्मक:=मान 0 के साथ आरंभ की गई एक नई सूची

  • प्रत्येक अनुक्रमणिका के लिए i और मान j अंकों में, करें

    • यदि j तालिका में मौजूद नहीं है, तो

      • तालिका[j] :=एक नई जोड़ी (i, 0)

      • अन्यथा,

        • तालिका [जे, -1]:=मैं

      • उपसर्ग में एक नया तत्व जोड़ें जो उपसर्ग + j के अंतिम तत्व के बराबर हो

      • नकारात्मक के अंतिम तत्व की नकल करें

      • अगर j <0 , तो

        • नकारात्मक का अंतिम तत्व :=ऋणात्मक का अंतिम तत्व + j

  • उत्तर:=ऋणात्मक अनंत

  • तालिका के सभी मानों में प्रत्येक जोड़ी (i,j) के लिए, करें

    • यदि j, 0 के समान नहीं है, तो

      • sm1 :=उपसर्ग[j+1] - उपसर्ग[i]

      • अगर j> i+1, तो

        • sm2 :=ऋणात्मक[j] - ऋणात्मक[i+1]

      • अन्यथा,

        • एसएम2:=0

      • उत्तर :=अधिकतम (उत्तर, sm1 - sm2)

  • वापसी उत्तर

उदाहरण

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

def solve(nums):
   table = {}
   prefix = [0]
   negative = [0]
   for i, j in enumerate(nums):
      if j not in table:
         table[j] = [i, 0]
      else:
         table[j][-1] = i
      prefix += prefix[-1] + j,
      negative += negative[-1],
      if j < 0:
         negative[-1] += j

   ans = float('-inf')
   for i,j in table.values():
      if j != 0:
         sm1 = prefix[j+1] - prefix[i]
         sm2 = negative[j] - negative[i+1] if j > i+1 else 0
         ans = max(ans, sm1 - sm2)
   return ans

print(solve([3, 4, 5, 3, 4]))

इनपुट

[3, 4, 5, 3, 4]

आउटपुट

16

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, जिसकी हमें सरणी के योग की गणना करने की आवश्यकता है। योग प्राप्त करने के लिए प्रत्येक अनुक्रमणिका में संपूर्ण सरणी और तत्व को पार करने के लिए पाशविक-बल दृष्टिकोण की चर्चा नीचे प्रत्येक अनुक्रमण

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें सरणी के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूटफोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके सबसे बड़े तत्व की गणना करते हैं और तत्व प्राप्त करते हैं।

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें दिए गए सरणी के योग की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स अप्रोच का अनुसरण कर सकते हैं, यानी एक सूची को पार करना और प्रत्येक तत्व को एक खा