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.

Subscribe to see which companies asked this question

class Solution {
public:
    /*
     * 题目就是给出一堆坐标,求由坐标组成面积最大的矩形
     * 矩形的面积主要由最短的坐标所控制,例如整个vecotr只有 3,5
     * 则面积为 3 * (1 - 0) = 3
     * 解决方式左右两个下标,然后向中间移动,求这两个下标所对应的y与x轴
     * 组成的最大矩形
     */
    int maxArea(vector<int> &height) {
        int start =0;
        int end = height.size()-1;
        int maxV = INT_MIN;
        while(start<end)
        {
            int contain = min(height[end], height[start]) * (end-start);
            maxV = max(maxV, contain);
            if(height[start]<= height[end])
            {
                start++;
            }
            else
            {
                end--;
            }
        }
        return maxV;
    }
};
原文地址:https://www.cnblogs.com/SpeakSoftlyLove/p/5097135.html