🌕🌕 11. 盛最多水的容器

吞佛童子2022年6月20日
  • algorithm
  • array
  • 双指针
小于 1 分钟

🌕🌕 11. 盛最多水的容器

难度: 🌕🌕

问题描述

img_1.png


解法

class Solution {
    public int maxArea(int[] height) {
        // 思路:
        // 双指针
        int len = height.length;
        int left = 0;
        int right = len - 1;
        int res = 0;
        while(left < right) {
            res = Math.max(res, getArea(height, left, right));
            // 每次移动一侧,短板的一侧
            if(height[left] <= height[right]) {
                left ++;
            } else {
                right --;
            }
        }
        return res;
    }

    private int getArea(int[] height, int left, int right) {
        int min = Math.min(height[left], height[right]);
        int area = (right - left) * min;
        // System.out.println(height[left] + "  " + height[right] + "  " + area);
        return area;
    }
}

输出

img.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou