मान लीजिए कि हमारे पास 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