十七
十七
Published on 2023-11-09 / 164 Visits
0
0

leetcode11. 盛最多水的容器

题目

image

题解

  • 盛水的体积取决于两个板子的距离和两个板子的最小值;
  • 当距离不变时,我们需要较小板子的最大值;

我们用双指针i,j分别指向数组的开头和结尾,此时两个板子的距离最大,那么只需要移动一个板子就可以继续寻找更大体积的时候,那么应该移动哪个板子呢?

  1. 移动长板,那么此时长的板子可能变长也可能变短,同时距离也会变短,体积不一定会变大。
  2. 移动短板,那么此时体积一定会变大(若短板变短了加上距离变短一定不会有更大的体积)。

所以应该让短板移动才会有更大的体积出现。

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

Comment