Sunday, May 19, 2013

Day 27, 11, Container With Most Water

Container With Most Water
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