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

यहां हम 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