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

पायथन में सरणी को क्रमबद्ध बनाने के लिए हटाए जाने वाले सबसे छोटे सबएरे को खोजने का प्रोग्राम


मान लीजिए हमारे पास एक सरणी arr है, हमें arr का एक सबएरे हटाना है ताकि arr के शेष तत्व गैर-घटते क्रम (non-decreasing order) में हों। हमें हटाए जाने वाले सबसे छोटे सबएरे की लंबाई ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट है arr = [10,20,30,100,40,20,30,50], तो आउटपुट 3 होगा क्योंकि हम [100, 40, 20] हटा सकते हैं जो लंबाई 3 का सबसे छोटा सबएरे है, और इसे हटाने के बाद सभी तत्व गैर-घटते क्रम में होंगे: [10,20,30,30,50]।

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

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

  • n := arr का आकार
  • arr := arr के बाईं ओर 0 डालें और दाईं ओर अनंत (infinity) डालें
  • A, B := दो नई खाली सूचियाँ
  • p := 1, q := arr का आकार - 2
  • M := 0
  • जब p ≤ q हो, तब:
    • यदि arr[p-1] ≤ arr[p], तो:
      • A के अंत में arr[p] डालें
      • p := p + 1
    • अन्यथा यदि arr[q] ≤ arr[q+1], तो:
      • B के अंत में arr[q] डालें
      • जब A खाली नहीं है और A का अंतिम तत्व > B का अंतिम तत्व हो:
        • A से अंतिम तत्व हटाएं
      • q := q - 1
    • अन्यथा, लूप से बाहर निकलें
    • M := M और (A का आकार + B का आकार) में से अधिकतम
  • n - M लौटाएं

उदाहरण

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

def solve(arr):
    n = len(arr)
    arr = [0] + arr + [float("inf")]
    A, B = [], []
    p, q = 1, len(arr) - 2
    M = 0
    while p <= q:
        if arr[p-1] <= arr[p]:
            A.append(arr[p])
            p += 1
        elif arr[q] <= arr[q+1]:
            B.append(arr[q])
            while A and A[-1] > B[-1]:
                A.pop()
            q -= 1
        else:
            break
        M = max(M, len(A) + len(B))
    return n - M

arr = [10,20,30,100,40,20,30,50]
print(solve(arr))

इनपुट

[10,20,30,100,40,20,30,50]

आउटपुट

3
  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके और तत्व प्राप्त करके सबसे बड़ा तत्व निकालते हैं। हम नीच

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें दिए गए ऐरे का योग निकालने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का पालन कर सकते हैं यानी एक लिस्ट को ट्रैवर्स करना और प्रत्येक एलिमें

  1. पायथन प्रोग्राम में इंसर्शन सॉर्ट पायथन प्रोग्राम में इंसर्शन सॉर्ट

    इस लेख में, हम पायथन 3.x में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। एल्गोरिदम इनपुट एलिमेंट्स पर इटरेट करें और प्रत्येक इटरेशन में सॉर्टेड ऐरे को बढ़ाएं। वर्तमान एलिमेंट की तुलना सॉर्टेड ऐरे में उपलब्ध सबसे बड़े मान से करें। यदि वर्तमान एलिमेंट बड़ा है, तो यह एलिमेंट को उ