这道题完美地卡在了我只知道放置前后指针的硬思维上,通过前后进行计算盛水量,再移动垂线较短的指针进行移动,就依次找到最大盛水量即可。

var maxArea = function(height) {
    // 左右指针
    let i = 0;
    let j = height.length - 1;
    let maxWater = 0;
    let num = 1;
    while(i != j){
        let currentWater = 0;
        if(height[i] < height[j]){
            // 计算两个点之间的存储水容量
            currentWater = height[i] * (height.length - num);
            i++;
            num++;
        }
        else{
            // 计算两个点之间的存储水容量
            currentWater = height[j] * (height.length - num);
            j--;
            num++;
        }
        maxWater = (maxWater > currentWater) ? maxWater : currentWater;
    }

    return maxWater;

};

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐