</pre><pre name="code" class="cpp">class Solution { public: int max(int a,int b) { if(a > b) return a; else return b; } int min(int a,int b) { if(a < b) return a; else return b; } int maxArea(vector<int>& height) { int n = height.size(); int i; int l = 0; int r = n-1; int ans = 0; while( l < r) { ans = max(ans,min(height[l],height[r])*(r-l)); if(height[l] < height[r]) { int k = l; while(k < r && height[k] <= height[l]) k++; l = k; } else { int k = r; while(k > l && height[k] <= height[r]) k--; r = k; } } return ans; } };
原文:http://blog.csdn.net/sunshinemay_1014/article/details/46492615