Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.
---------------------------------------
O(n), we only skip pairs that are certain to have a smaller size than the current
class Solution {
public:
int maxArea(vector<int> &height) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int len = height.size();
int maxW=0,left=0,right=len-1;
while (left<right) {
int curMax = (right - left) * min(height[left],height[right]);
maxW = max(maxW,curMax);
if (height[left] > height[right]) {
right--;
}else {
left++;
}
}
return maxW;
}
};
No comments:
Post a Comment