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

Python में वर्षा जल संग्रहण


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

Python में वर्षा जल संग्रहण

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

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

  • एक स्टैक st परिभाषित करें, water := 0 और i := 0

  • जब तक i < height का आकार

    • यदि स्टैक खाली है या height[स्टैक शीर्ष] >= height[i], तो i को स्टैक में डालें, i को 1 से बढ़ाएं

    • अन्यथा

      • x := स्टैक शीर्ष तत्व, स्टैक से शीर्ष हटाएं

      • यदि स्टैक खाली नहीं है, तो

        • temp := height[स्टैक शीर्ष तत्व] और height[i] का न्यूनतम

        • dest := i - स्टैक शीर्ष तत्व - 1

        • water := water + dist * (temp - height[x])

  • water लौटाएं

उदाहरण

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

class Solution(object): def trap(self, height): stack = [] water = 0 i=0 while i=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] होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -दो सरणी res और stack बनाएं, curr := root सेट करेंएक अनंत लूप च

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

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

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

    इस लेख में, हम पायथन 3.x (या पूर्व संस्करणों) में Stack और Queue संरचनाओं के बारे में सीखेंगे। यहाँ हम इन डेटा संरचनाओं के भीतर कार्य और संशोधन पर चर्चा करेंगे। इसमें शामिल हैं - सम्मिलन संक्रिया (Push, Enqueue) हटाने की संक्रिया (Pop, Dequeue) प्रदर्शन/ट्रैवर्सल संक्रिया पूर्वापेक्षाएँ: सूची औ