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

पायथन में सख्ती से बढ़ते फिर घटते सबलिस्ट की सबसे लंबी लंबाई खोजने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हमें सबसे लंबे सबलिस्ट की लंबाई ढूंढनी है जैसे कि (न्यूनतम लंबाई 3) इसके मान सख्ती से बढ़ रहे हैं और फिर घट रहे हैं।

उदाहरण के लिए, यदि इनपुट nums = [7, 1, 3, 5, 2, 0] है, तो आउटपुट 5 होगा, क्योंकि सबलिस्ट [1, 3, 5, 2, 0] सख्ती से बढ़ती फिर घटती है।

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

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

  • i := 0, n := len(a), res := -infinity
  • जब तक i < n-2:
    • st := i
    • linc := 0, ldec := 0
    • जब तक i < n-1 और a[i] < a[i+1]:
      • linc += 1, i += 1
    • जब तक i < n-1 और a[i] > a[i+1]:
      • ldec += 1, i += 1
    • यदि linc > 0 और ldec > 0:
      • res := max(res, i-st+1)
    • जब तक i < n-1 और a[i] == a[i+1]: i += 1
  • res लौटाएं यदि res >= 0 अन्यथा 0

उदाहरण कोड

class Solution:
    def solve(self, a):
        i, n, res = 0, len(a), float("-inf")
        while i < n - 2:
            st = i
            linc, ldec = 0, 0
            while i < n - 1 and a[i] < a[i+1]:
                linc += 1
                i += 1
            while i < n - 1 and a[i] > a[i+1]:
                ldec += 1
                i += 1
            if linc > 0 and ldec > 0:
                res = max(res, i - st + 1)
            while i < n - 1 and a[i] == a[i+1]:
                i += 1
        return res if res >= 0 else 0

ob = Solution()
nums = [8, 2, 4, 6, 3, 1]
print(ob.solve(nums))

इनपुट

[8, 2, 4, 6, 3, 1]

आउटपुट

5

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

    सबलिस्ट का अधिकतम। 6।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे−ret := 0दो डबल एंडेड क्यू minq और maxq परिभाषित करेंl := 0, r := 0जब तक r < nums का आकार, करेंn := nums[r]जब तक minq और n < nums[minq का अंतिम तत्व], करेंminq से अंतिम तत्व हटाएंr को minq के अंत में डालें nums[maxq का अंतिम तत

  1. - पायथन में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढनी है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। उदाहरण के लिए, यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है और इसकी लंबाई 3 है।समाधान दृष्टिकोण (डायनामिक प्रोग्रामिंग)इस समस्या

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

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें एक या शून्य तत्वों को हटाकर प्राप्त की जा सकने वाली सख्ती से बढ़ती सन्निकट सबलिस्ट की अधिकतम लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट nums = [30, 11, 12, 13, 14, 15, 18, 17, 32] है, तो आउटपुट 7 होगा, क्योंकि जब हम सूची में 18 को हटाते हैं