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

छायांकित भाग में, ऊंचाई 7 है और 7 खंड हैं, इसलिए कुल क्षेत्र वास्तव में 7 * 7 = 49 है। यह आउटपुट है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
- low := 0, high := arr की लंबाई - 1, ans := 0
- जब तक low < high
- यदि arr[low] < arr[high]: min_h := height[low] और min_ind := low
- अन्यथा min_h := height[high] और min_ind := high
- ans := (high - low)* min_h और ans का अधिकतम
- यदि low + 1 = min_ind + 1, तो low को 1 से बढ़ाएं अन्यथा high को 1 से घटाएं
- ans लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
class Solution(object): def maxArea(self, height): low = 0 high = len(height) - 1 ans = 0 while low < high: if height[low]इनपुट
[1,8,6,2,5,4,8,3,7]आउटपुट
49