LeetCode-11. 盛最多水的容器

乐云一
  • 刷题日记
  • LeetCode
About 271 wordsLess than 1 minute

QQ截图20211105141053.png

思路

非常经典的双指针问题。 根据图形可以看出,最大的面积有两个条件,一是高度一定是高的,左边和右边有距离。 即面积=短的一边高度*两边的距离 所以我们在最左边和最右边设置两个指针。 动态的计算他们此时的面积,并与之前进行比较留下最大值。 而由于是计算最大值,所以当我们确定一边是当前最大面积的值时,为了找到比他更大的值,就需要去移动高度最矮的那边。

根据上述伪代码思想,得.

代码

    public int maxArea(int[] height) {
        int left=0;
        int right=height.length-1;
        int sum=0;
        while(left<=right){
            int h=Math.min(height[left],height[right]);
            sum=Math.max(sum,(right-left)*h);
            if(height[left]>height[right]){
                right--;
            }else{
                left++;
            }
        }
        return sum;
    }
Last update:
Contributors: leyunone
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.14.7