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

पायथन में शून्य योग वाली सबसे लंबी सबलिस्ट की लंबाई खोजने का प्रोग्राम


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

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

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • table := एक खाली मैप (डिक्शनरी)
  • cs := 0 (कम्युलेटिव सम), max_diff := 0
  • i को 0 से nums के आकार - 1 तक लूप चलाएं:
    • cs := cs + nums[i]
    • यदि cs 0 के बराबर है, तो max_diff := max(i + 1, max_diff)
    • यदि cs table में मौजूद है, तो max_diff := max(max_diff, i - table[cs])
    • अन्यथा, table[cs] := i
  • 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. - पायथन में सबसे लंबे लगातार अनुक्रम की लंबाई खोजने का प्रोग्राम

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

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

    मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, हमें सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट S = helloworld, T = hellorld है, तो आउटपुट 8 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: c := एक नया मैप, d := एक नया मैप। i को 0 से len(a) - 1 तक लूप म

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

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