力扣 11. 盛最多水的容器

32 阅读1分钟

🔗 leetcode.cn/problems/co…

题目

  • 给一个数组,表示在位置 i 上,边界的高度为 height[i],求边界和 x 轴组成的容器的最大面积

思路

  • 指针指向数组的头和尾,以此为边界,计算面积,每次挪动更短的边界,去探寻是否有更大的面积
  • 因为这是以当前短边为边界的容器最大值了

代码

class Solution {
public:
    int maxArea(vector<int>& height) {
        int ans = 0;
        int left = 0, right = height.size()-1;
        while (left < right) {
            int square = min(height[left], height[right]) *(right - left);
            ans = max(ans, square);
            if (height[left] < height[right]) {
                left++;
            } else {
                right--;
            }
        }
        return ans;
        
    }
};