当前位置:   article > 正文

装最多水的容器_给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内

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

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

#### Solution
思路:从两头开始逐渐找长方形的长,
```
class Solution {
public:
    /**
     * @param heights: a vector of integers
     * @return: an integer
     */
    int maxArea(vector<int> &heights) {
        // write your code here
        int begin = 0,end = heights.size()-1;
        int area = 0;
        while(begin < end){
            area = max(area, min(heights[begin],heights[end]) * (end - begin));
            if(heights[begin] > heights[end]){
                end --;
            }else{
                begin++;
            }
        }
        return area;
    }
};
```
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/146234?site
推荐阅读
相关标签
  

闽ICP备14008679号