Monday, November 25, 2013

LeetCode Problem : Container With Most Water

Problem

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.

Code

int maxArea(vector<int> &height) {
    // Note: The Solution object is instantiated only once and is reused by each test case.
    int n = height.size();
    int i = 0,j = n - 1;
    int max_a = 0;
    while(i < j){
        int area = min(height[i],height[j])*(j - i);
        if(max_a < area)
            max_a = area;
        if(height[i] < height[j])
            ++i;
        else if(height[i] > height[j])
            --j;
        else{
            ++i;
            --j;
        }
    }
    return max_a;
}

No comments:

Post a Comment