Maximum Water Trapped by a Pair of Vertical Lines

Leetcode #11


Description:

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 and n is at least 2.

Example:

Note

Idea:

比较简单,如果height left < right, left++, else right--, 再求面积,更新。

Time: O(n)

Code:

class Solution {
public:
    int maxArea(vector<int>& height) {
        if(height.size()<2){
            return 0;
        }
        int maxContain = 0;
        int i=0; 
        int j=height.size()-1;
        while(i<j){
            maxContain = max( maxContain, min(height[i], height[j])*(j-i) );
            if(height[i]<height[j]){
                ++i;
            }
            else{
                --j;
            }
        }
        return maxContain;  
    }
};

results matching ""

    No results matching ""