题解 | #盛水最多的容器#

盛水最多的容器

https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47

#include <algorithm>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param height int整型vector 
     * @return int整型
     */
    int maxArea(vector<int>& height) {
        // write code here
        // 找数组两个值之间的最小值,乘以他们的距离求水
        // 求水最大的情况
        
        int Asize = height.size();
        if(Asize<2){
            return 0;
        }
        vector<int> value;
        int maxSum = 0;
        // 不能排序,排序的话会改变值的位置
        // 需要删除已经比较过的内容。
        // 找两个最大的值作乘积
        int head = 0;
        int end = Asize-1;
        while(head!=end && head<Asize && end>=0){
            int tmp = min(height[head],height[end])*(end-head);
            maxSum = max(maxSum, tmp);
            if(height[head]>height[end]){
                end --;
            }
            else{
                head++;
            }
        }
        
        
        return maxSum;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-16 17:28
码农索隆:1.一页 2.项目展开讲你的贡献 3.废话太多,精简一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务