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

सबसे लंबे सबलिस्ट की लंबाई खोजने का कार्यक्रम जिसका योग पायथन में 0 है


मान लीजिए कि हमारे पास केवल दो मानों 1 और -1 के साथ एक सूची है। हमें सबसे लंबे सबलिस्ट की लंबाई ज्ञात करनी है जिसका योग 0 है।

इसलिए, यदि इनपुट nums =[1, 1, −1, 1, 1, −1, 1, −1, 1, −1] जैसा है, तो आउटपुट 8 होगा, क्योंकि सबसे लंबी सबलिस्ट [−1 है] , 1, 1, −1, 1, −1, 1, −1] जिसका योग 0 है।

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

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

  • cs :=0, max_diff :=0

  • मेरे लिए 0 से लेकर अंकों के आकार -1 तक के लिए, करें

    • सीएस:=सीएस + अंक[i]

    • अगर सीएस 0 के समान है, तो

      • max_diff :=अधिकतम i + 1 और max_diff

    • यदि cs तालिका में है, तो

      • max_diff :=अधिकतम max_diff और (i - तालिका[cs])

    • अन्यथा,

      • टेबल [सीएस] :=मैं

  • वापसी max_diff

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

उदाहरण

class Solution:
   def solve(self, nums):
      table = {}
      cs = 0
      max_diff = 0
      for i in range(len(nums)):
         cs += nums[i]
         if cs == 0:
            max_diff = max(i + 1, max_diff)
         if cs in table:
            max_diff = max(max_diff, i − table[cs])
         else:
            table[cs] = i
      return max_diff
ob = Solution()
nums = [1, 1, −1, 1, 1, −1, 1, −1, 1, −1]
print(ob.solve(nums))

इनपुट

[1, 1, −1, 1, 1, −1, 1, −1, 1, −1]

आउटपुट

8

  1. पायथन में लगातार सबसे लंबे अनुक्रम की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक क्रमबद्ध सरणी है, हमें लगातार तत्वों के सबसे लंबे अनुक्रम की लंबाई का पता लगाना है। इसलिए, यदि इनपुट अंकों की तरह है =[70, 7, 50, 4, 6, 5], तो आउटपुट 4 होगा, क्योंकि लगातार तत्वों का सबसे लंबा अनुक्रम [4, 5, 6, 7] है। इसलिए हम इसकी लंबाई लौटाते हैं:4. इसे हल क

  1. पायथन में सबसे लंबे विपर्यय क्रम की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, तो हमें सबसे लंबे एनाग्राम अनुक्रम की लंबाई ज्ञात करनी होगी। इसलिए, यदि इनपुट S =helloworld, T =hellolorld जैसा है, तो आउटपुट 8 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सी:=एक नया नक्शा, डी:=एक नया नक्शा मैं के लिए 0 से

  1. पायथन में सबसे लंबे समय तक संतुलित बाद की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है जिसमें कोष्ठक कोष्ठक ( और ) है, हमें संतुलित कोष्ठकों के सबसे लंबे बाद के क्रम की लंबाई ज्ञात करनी है। इसलिए, यदि इनपुट s =())(()( जैसा है, तो आउटपुट 4 होगा, क्योंकि हम बाद में ()() ले सकते हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - रेस :=0