container-with-most-water

来源:互联网 发布:中国木制品数据 编辑:程序博客网 时间:2024/06/05 07:59

给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点(i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。

您在真实的面试中是否遇到过这个题? 
Yes
样例

给出[1,3,2], 最大的储水面积是2.

class Solution {public:    int maxArea(vector<int> &h) {        int n=h.size();        if(n<=1) return 0;        int left=0,right=n-1;        int res=0;        while(left<right){            res=max(res,(right-left)*min(h[left],h[right]));            if(h[left]<h[right]) left++;            else if(h[left]>h[right]) right--;            else{                left++;                right--;            }        }        return res;    }};


0 0
原创粉丝点击