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