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

पायथन में अधिकतम चौड़ाई रैंप ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक एक सरणी है, एक रैंप एक टुपल (i, j) है जिसके लिए i < j और nums[i] <= nums[j]। ऐसी रैंप की चौड़ाई (j-i) है। हमें nums में रैंप की अधिकतम चौड़ाई ज्ञात करनी है। यदि हम ऐसा नहीं ढूंढ सकते, तो 0 वापस करें।

इसलिए, यदि इनपुट है nums = [6,0,8,2,1,5], तो आउटपुट 4 होगा क्योंकि अधिकतम चौड़ाई रैंप (i, j) = (1, 5) पर प्राप्त होती है और nums[1] = 0 और nums[5] = 5।

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

  • B := एक नया मैप

  • i को 0 से nums के आकार तक के लिए, करें

    • x := nums[i]

    • यदि x B में है, तो

      • i को B[x] के अंत में डालें

    • अन्यथा,

      • B[x] := [i]

  • mini := एक सूची जिसमें प्रारंभ में एक inf हो

  • maxi := एक सूची जिसमें प्रारंभ में एक -inf हो

  • B के सभी कुंजियों की क्रमबद्ध सूची में प्रत्येक x के लिए, करें

    • mini के अंतिम तत्व और B[x] के न्यूनतम का न्यूनतम mini के अंत में डालें

  • B के सभी कुंजियों की उल्टी क्रमबद्ध सूची में प्रत्येक x के लिए, करें

    • maxi के अंतिम तत्व और B[x] के अधिकतम का अधिकतम maxi के अंत में डालें

  • maxi := maxi को उल्टा करें फिर शुरुआत से अंतिम से पहले तक उपसरणी लें

  • mini := mini[1 से अंत तक] उपसरणी

  • p := 0

  • res := -inf

  • जब तक p < mini का आकार, करें

    • res := res और (maxi[p] - mini[p]) का अधिकतम

    • p := p + 1

  • res वापस करें

उदाहरण

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

def solve(nums):
    B = {}
    for i in range(len(nums)):
        x = nums[i]
        if x in B:
            B[x].append(i)
        else:
            B[x] = [i]
    mini = [float('inf')]
    maxi = [float('-inf')]
    for x in sorted(B.keys()):
        mini.append(min(mini[-1], min(B[x])))
    for x in sorted(B.keys(), reverse=True):
        maxi.append(max(maxi[-1], max(B[x])))
    maxi = maxi[::-1][:-1]
    mini = mini[1:]
    p = 0
    res = float('-inf')
    while p < len(mini):
        res = max(res, maxi[p] - mini[p])
        p += 1
    return res

nums = [6,0,8,2,1,5]
print(solve(nums))

इनपुट

[6,0,8,2,1,5]

आउटपुट

4
  1. Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें

    n इमारतें एक पंक्ति में (1 से n लेबल)। प्रतिबंध: restrictions[i] = (id, max_height)। नियम: ऊंचाई ≥ 0, पहली इमारत की ऊंचाई = 0, आसन्न इमारतों में ऊंचाई अंतर ≤ 1। अधिकतम संभव ऊंचाई खोजें। एल्गोरिदम: दो पास + शिखर गणना प्रतिबंधों को id द्वारा सॉर्ट करें फॉरवर्ड पास: बाएं से दाएं, प्रत्येक प्रतिबंध को

  1. पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें ट्री में किसी भी स्तर की अधिकतम चौड़ाई ढूंढनी है। यहां एक स्तर की चौड़ाई उन नोड्स की संख्या है जो बाएं सबसे नोड और दाएं सबसे नोड के बीच रखे जा सकते हैं। उदाहरण के लिए, यदि इनपुट है: तो आउटपुट होगा 2। हल करने के चरण एक मैप d बनाएं, न्यूनतम और अधिकतम मान

  1. - Python प्रोग्राम: तीन संख्याओं में से अधिकतम खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो तीन आंकड़ों में से अधिकतम राशि ढूंढता है। हमारे पास तीन संख्याएं होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ढूंढना है।बेहतर समझ के लिए कुछ नमूना टेस्ट केस देखें।इनपुट: a, b, c = 2, 34, 4 आउटपुट: 34इनपुट: a, b, c = 25, 3, 12 आउटपुट: 25इनप