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.

说明:这个问题跟hdoj上的一个求最大面积的问题相似,但还是有不同的,hdoj的问题要求是连续的面积,这个不要求,即在两个高之间出现的短板都可以忽略。当时按着hdoj的问题来做这个题,错了很多次,猛然发现是不一样的,汗。

//code

class Solution {
public:
    int min(int a, int b)
    {
        return a < b ? a : b;
    }
    int maxArea(vector<int> &height) {
        int max_area = 0;
        int size = height.size();
        int i = 0; 
        int j = size - 1;
        while(i < j)
        {
            int area = min(height[i], height[j]) * ( j - i);
            if(area > max_area) max_area = area;
            if(height[i] < height[j]) ++i;
            else 
            --j;
        }
        return max_area;
    }
};
这个问题的思路是参照网上的,我觉得应该是比较好的了。自己也没想到更好的。

你可能感兴趣的:(LeetCode,C++,c,with,container,hdoj,most)