Monday, September 16, 2013

[Leetcode] Container With Most Water

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.




//Solution1:  brute force
int maxArea(vector &height) {
    int maxVal = 0;
    for (int i=0; i maxVal)
                maxVal = area;
        }
    }
   
    return maxVal;
}
	
//Solution2:  two pointers
int maxArea(vector &height) {
    int i = 0;
    int j = height.size() - 1;
    int maxAreas = min(height[j],height[i])*(j-i);
    while (i < j)
    {
        if (height[i] >= height[j])
            j--;
        else
            i++;
        int area = (j-i) * min(height[i],height[j]);
        if (area > maxAreas)
            maxAreas = area;
    }
    return maxAreas;
}

No comments:

Post a Comment