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

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

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

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

एल्गोरिदम

  1. यदि nums खाली है, तो 0 लौटाएं
  2. end := nums के आकार की सूची, 1 से भरी हुई
  3. start := nums के आकार की सूची, 1 से भरी हुई
  4. बाएं से दाएं: end[i] की गणना करें जो i पर समाप्त होने वाले सबसे लंबे बढ़ते सबलिस्ट की लंबाई है
  5. दाएं से बाएं: start[j] की गणना करें जो j से शुरू होने वाले सबसे लंबे बढ़ते सबलिस्ट की लंबाई है
  6. res := end और start के तत्वों का अधिकतम
  7. प्रत्येक k के लिए 1 से len(nums)-2 तक:
    • यदि nums[k-1] < nums[k+1], तो res = max(res, end[k-1] + start[k+1])
  8. res लौटाएं

उदाहरण कार्यान्वयन

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))  # आउटपुट: 7

इनपुट

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

आउटपुट

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

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

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

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

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

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