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

पायथन में सन्निहित कड़ाई से बढ़ती उपसूची की लंबाई खोजने का कार्यक्रम

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

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

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

  • n :=अंकों का आकार

  • पूर्व :=आकार n की सूची और 1s से भरें

  • 1 से n-1 की श्रेणी में i के लिए, करें

    • अगर अंक [i]> अंक [i - 1], तो

      • पूर्व[i] :=पूर्व[i - 1] + 1

  • suff :=आकार n की एक सूची और 1s से भरें

  • n - 2 से -1 की श्रेणी में i के लिए, 1 से घटाएं, करें

    • अगर अंक [i] <अंक [i + 1], तो

      • suff[i] :=suff[i + 1] + 1

  • उत्तर:=अधिकतम पूर्व और अधिकतम प्रत्यय का अधिकतम मूल्य

  • 1 से n-1 की श्रेणी में i के लिए, करें

    • अगर अंक [i - 1] <अंक [i + 1], तो

      • उत्तर:=अधिकतम उत्तर और (पूर्व[i - 1] + प्रत्यय [i + 1])

  • वापसी उत्तर

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

उदाहरण

class Solution:
   def solve(self, nums):
      n = len(nums)
      pre = [1] * n
      for i in range(1, n - 1):
         if nums[i] > nums[i - 1]:
            pre[i] = pre[i - 1] + 1
      suff = [1] * n
      for i in range(n - 2, -1, -1):
         if nums[i] < nums[i + 1]:
            suff[i] = suff[i + 1] + 1
               ans = max(max(pre), max(suff))
               for i in range(1, n - 1):
                  if nums[i - 1] < nums[i + 1]:
                     ans = max(ans, pre[i - 1] + suff[i + 1])
               return ans
ob = Solution()
nums = [30, 11, 12, 13, 14, 15, 18, 17, 32]
print(ob.solve(nums))

इनपुट

[30, 11, 12, 13, 14, 15, 18, 17, 32]

आउटपुट

7

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

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

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

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

  1. पायथन में अधिकतम योग के साथ सन्निहित सबलिस्ट का योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक सरणी ए है। हमें उस सन्निहित उपन्यास को खोजना है जिसमें अधिकतम योग है, और उसका योग भी वापस करना है। तो अगर सरणी ए ए =[-2,1,-3,4,-1,2,1,-5,4] की तरह है, तो योग 6 होगा। और सबरेरे [4, -1, 2, 1]. इसे हल करने के लिए हम गतिशील प्रोग्रामिंग दृष्टिकोण का उपयोग करने का प्रयास करेंगे