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

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


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें सबसे लंबे सबलिस्ट की लंबाई ढूंढनी है जहां 2 * सबलिस्ट का न्यूनतम > सबलिस्ट का अधिकतम।

इसलिए, यदि इनपुट nums = [10, 2, 6, 6, 4, 4] जैसा है, तो आउटपुट 4 होगा, क्योंकि सबलिस्ट [6, 6, 4,4] सबसे लंबा सबलिस्ट है जो मानदंड रखता है क्योंकि 2 * 4 > 6।

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

  • ret := 0

  • दो डबल एंडेड क्यू minq और maxq परिभाषित करें

  • l := 0, r := 0

  • जब तक r < nums का आकार, करें

    • n := nums[r]

    • जब तक minq और n < nums[minq का अंतिम तत्व], करें

      • minq से अंतिम तत्व हटाएं

    • r को minq के अंत में डालें

    • जब तक maxq और n > nums[maxq का अंतिम तत्व], करें

      • maxq से अंतिम तत्व हटाएं

    • r को maxq के अंत में डालें

    • r := r + 1

    • जब तक l < r और nums[minq[0]] * 2 <= nums[maxq[0]], करें

      • यदि minq[0], l के समान है, तो

        • minq का पहला तत्व हटाएं

      • यदि maxq[0], l के समान है, तो

        • maxq का पहला तत्व हटाएं

      • l := l + 1

    • ret := ret और (r - l) का अधिकतम

  • ret वापस करें

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

उदाहरण

class Solution:    def solve(self, nums):       from collections import deque       ret = 0       minq, maxq = deque(), deque()       l, r = 0, 0       while r < len(nums):          n = nums[r]          while minq and n < nums[minq[-1]]:             minq.pop()       minq.append(r)       while maxq and n > nums[maxq[-1]]:          maxq.pop()       maxq.append(r)       r += 1       while l < r and nums[minq[0]] * 2 <= nums[maxq[0]]:          if minq[0] == l:             minq.popleft()          if maxq[0] == l:             maxq.popleft()          l += 1       ret = max(ret, r - l)    return ret ob = Solution() nums = [10, 2, 6, 6, 4, 4] print(ob.solve(nums))

इनपुट

[10, 2, 6, 6, 4, 4]

आउटपुट

4

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

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

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

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, और हमें nums में सबसे लंबी सबलिस्ट की लंबाई ढूंढनी है जिसमें लगातार संख्याओं के बीच असमानता का संबंध बारी-बारी से कम-से-कम और अधिक-से-अधिक ऑपरेशन के बीच बदलता हो। पहले दो संख्याओं की असमानता या तो कम-से-कम या अधिक-से-अधिक हो सकती है। उदाहरण के लि

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

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, और हमें सबसे लंबी सन्निकट सबलिस्ट की लंबाई ढूंढनी है जहां सभी तत्व अद्वितीय हों। उदाहरण के लिए, यदि इनपुट nums = [6, 2, 4, 6, 3, 4, 5, 2] है, तो आउटपुट 5 होगा, क्योंकि अद्वितीय तत्वों की सबसे लंबी सूची [6, 3, 4, 5, 2] है। इसे हल करने के लिए हम नि