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

पायथन में वर्षा जल को फंसाना


मान लीजिए कि हमारे पास n गैर-ऋणात्मक पूर्णांकों की एक सरणी है। ये एक ऊंचाई के नक्शे का प्रतिनिधित्व कर रहे हैं जहां प्रत्येक बार की चौड़ाई 1 है, हमें गणना करनी होगी कि बारिश के बाद यह कितना पानी फंसा सकता है। तो नक्शा इस तरह होगा -

पायथन में वर्षा जल को फंसाना

यहां हम देख सकते हैं कि 6 नीले बॉक्स हैं, इसलिए आउटपुट 6 होगा।

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

  • एक स्टैक सेंट को परिभाषित करें, पानी:=0 और मैं:=0

  • जबकि मैं <ऊंचाई का आकार

    • यदि स्टैक खाली है या ऊँचाई [स्टैक टॉप]> =ऊँचाई [i] है, तो i को स्टैक में धकेलें, i को 1 से बढ़ाएँ

    • अन्यथा

      • x:=स्टैक टॉप एलिमेंट, स्टैक से टॉप डिलीट करें

      • अगर स्टैक खाली नहीं है, तो

        • अस्थायी:=न्यूनतम ऊंचाई [स्टैक टॉप एलिमेंट] और ऊंचाई [i]

        • डेस्ट :=i - स्टैक टॉप एलिमेंट - 1

        • पानी:=पानी + जिला * (तापमान - ऊंचाई [x])

  • पानी लौटाएं

उदाहरण

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

class Solution(object):
   def trap(self, height):
      stack = []
      water = 0
      i=0
      while i<len(height):
         if len(stack) == 0 or height[stack[-1]]>=height[i]:
            stack.append(i)
            i+=1
         else:
            x = stack[-1]
            stack.pop()
            if len(stack) != 0:
               temp = min(height[stack[-1]],height[i])
               dist = i - stack[-1]-1
               water += dist*(temp - height[x])
      return water
ob = Solution()
print(ob.trap([0,1,0,2,1,0,1,3,2,1,2,1]))

इनपुट

[0,1,0,2,1,0,1,3,2,1,2,1]

आउटपुट

6

  1. पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें रिकर्सन का उपयोग किए बिना इनऑर्डर ट्रैवर्सल स्कीम का उपयोग करके इस पेड़ को पार करना होगा। तो अगर पेड़ ऐसा है फिर ट्रैवर्सल होगा [2,5,7,10,15,20] इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - दो ऐरे रेस और स्टैक बनाएं, कर्व सेट करें:=रूट एक अनंत

  1. पायथन में अधिकांश पानी वाला कंटेनर

    मान लीजिए कि हमारे पास n गैर-ऋणात्मक पूर्णांकों का एक सेट है a1, a2, ..., a, प्रत्येक मान निर्देशांक (i, a[i]) पर एक बिंदु का प्रतिनिधित्व करता है। n लंबवत रेखाएं इस तरह से मौजूद हैं कि रेखा i के दो समापन बिंदु (i, a[i]) और (i, a[0]) पर हैं। हमें दो लाइनें ढूंढनी हैं, जो एक्स-अक्ष के साथ मिलकर एक कं

  1. पायथन में स्टैक और क्यू के रूप में सूची का उपयोग करना

    इस लेख में, हम पायथन 3.x में स्टैक और कतार संरचनाओं के बारे में जानेंगे। या जल्दी। यहां हम इन डेटा संरचनाओं के कामकाज और संशोधन पर चर्चा करेंगे - इसमें शामिल हैं - इंसर्शन ऑपरेशन (पुश, एनक्यू) हटाने की कार्रवाई (पॉप, डीक्यू) डिस्प्ले / ट्रैवर्सिंग ऑपरेशन आवश्यकताएं :सूची और सूची संचालन संबंधित