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

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

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

इसलिए, यदि इनपुट अंकों की तरह है =[35, 5, 6, 7, 8, 9, 12, 11, 26], तो आउटपुट 7 होगा, क्योंकि यदि हम अंकों में से 12 हटाते हैं, तो सूची [5] होगी , 6, 7, 8, 9, 11, 26], लंबाई 7 है, यह सबसे लंबी, सन्निहित, सख्ती से बढ़ती उप-सूची है।

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

  • यदि अंक खाली हैं, तो
    • वापसी 0
  • अंत :=अंकों के समान आकार की एक सूची और 1 से भरें
  • शुरू करें:=अंकों के समान आकार की सूची और 1 से भरें
  • i के लिए 1 से लेकर अंकों के आकार -1 तक के लिए
    • यदि अंक [i]> अंक [i - 1], तो
      • अंत[i] :=अंत[i - 1] + 1
  • j के लिए अंकों के रेंज आकार में - 2 से 0, 1 से घटाएं
    • यदि अंक [j + 1]> अंक [j], तो
      • शुरू करें[j] :=start[j + 1] + 1
  • res :=अंत के अधिकतम तत्व और प्रारंभ के तत्व
  • k के लिए 1 से लेकर अंकों के आकार - 2 तक, करें
    • यदि अंक [के -1] <अंक [के + 1], तो
      • res :=अधिकतम रेस और (end[k - 1] + start[k + 1])
  • रिटर्न रेस

उदाहरण

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

def solve(nums):
   if not nums:
      return 0
   end = [1 for i in nums]
   start = [1 for i in nums]

   for i in range(1, len(nums)):
      if nums[i] > nums[i - 1]:
         end[i] = end[i - 1] + 1

   for j in range(len(nums) - 2, -1, -1):
      if nums[j + 1] > nums[j]:
         start[j] = start[j + 1] + 1

   res = max(max(end), max(start))

   for k in range(1, len(nums) - 1):
      if nums[k - 1] < nums[k + 1]:
         res = max(res, end[k - 1] + start[k + 1])

   return res

nums = [35, 5, 6, 7, 8, 9, 12, 11, 26]
print(solve(nums))

इनपुट

[35, 5, 6, 7, 8, 9, 12, 11, 26]

आउटपुट

7

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

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

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

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

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

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