【力扣】盛最多水的容器 - 双指针

23 阅读1分钟

Problem: 11. 盛最多水的容器

思路

你选用何种方法解题? 双指针

解题过程

这些方法具体怎么运用? 我们可以把这个问题看作是求面积最大的问题,两个边的坐标相减再乘以对应短的边 所以我们要面积最大,肯定是希望值小的那一边换掉 设left=0和right=len-1,数值小的向中间移动,一边计算面积,记录最大的面积

复杂度

  • 时间复杂度: O(∗)O(*)O(∗)
  • 空间复杂度: O(∗)O(*)O(∗)

Code

function maxArea(height: number[]): number {
    // 面积最大,双指针
    let left=0,right=height.length-1;
    let mianji = 0;
    let max = 0;
    while(left<right){
        let k = Math.min(height[right],height[left]);
        mianji = (right-left)*k;
        max = Math.max(mianji,max);
        if(height[left]<height[right]){
            left++;
        }else{
            right--;
        }
    }
    return max;
};