题目
题解
- 盛水的体积取决于两个板子的距离和两个板子的最小值;
- 当距离不变时,我们需要较小板子的最大值;
我们用双指针i,j分别指向数组的开头和结尾,此时两个板子的距离最大,那么只需要移动一个板子就可以继续寻找更大体积的时候,那么应该移动哪个板子呢?
- 移动长板,那么此时长的板子可能变长也可能变短,同时距离也会变短,体积不一定会变大。
- 移动短板,那么此时体积一定会变大(若短板变短了加上距离变短一定不会有更大的体积)。
所以应该让短板移动才会有更大的体积出现。
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;
}
};